• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            poj3469

            Dual Core CPU

            Time Limit: 15000MS Memory Limit: 131072K
            Total Submissions: 12960 Accepted: 5553
            Case Time Limit: 5000MS

            Description

            As more and more computers are equipped with dual core CPU, SetagLilb, the Chief Technology Officer of TinySoft Corporation, decided to update their famous product - SWODNIW.

            The routine consists of N modules, and each of them should run in a certain core. The costs for all the routines to execute on two cores has been estimated. Let's define them as Ai and Bi. Meanwhile, M pairs of modules need to do some data-exchange. If they are running on the same core, then the cost of this action can be ignored. Otherwise, some extra cost are needed. You should arrange wisely to minimize the total cost.

            Input

            There are two integers in the first line of input data, N and M (1 ≤ N ≤ 20000, 1 ≤ M ≤ 200000) .
            The next N lines, each contains two integer, Ai and Bi.
            In the following M lines, each contains three integers: a, b, w. The meaning is that if module a and module b don't execute on the same core, you should pay extra w dollars for the data-exchange between them.

            Output

            Output only one integer, the minimum total cost.

            Sample Input

            3 1
            1 10
            2 10
            10 3
            2 3 1000
            

            Sample Output

            13
            這題點(diǎn)有20000,邊有200000,所以要寫(xiě)鏈表或者數(shù)組模擬
            終于找了個(gè)能看懂的了
            而且我覺(jué)著這代碼特別神有幾個(gè)地方
              1#include<stdio.h>
              2#include<string.h>
              3#include<math.h>
              4#define nmax 20010
              5#define emax 200010
              6#define inf 1<<30
              7int nn;
              8int head[nmax];
              9struct node
             10{
             11    int v,next,w;
             12}
            ;
             13struct node edge[emax*8];
             14int cnt,n,m,s,t;
             15void add(int u,int v,int w)
             16{
             17    edge[cnt].v=v;
             18    edge[cnt].w=w;
             19    edge[cnt].next=head[u];
             20    head[u]=cnt++;
             21    edge[cnt].v=u;
             22    edge[cnt].w=0;
             23    edge[cnt].next=head[v];
             24    head[v]=cnt++;
             25}

             26int sap()
             27{
             28    int pre[nmax],cur[nmax],dis[nmax],gap[nmax];
             29    int flow,aug,u;
             30    int flag;
             31    int i;
             32    flow=0;
             33    aug=inf;
             34    for(i=0; i<=nn; i++)
             35    {
             36        cur[i]=head[i];
             37        gap[i]=0;
             38        dis[i]=0;
             39    }

             40    gap[s]=nn;
             41    u=s;
             42    pre[s]=s;
             43    while(dis[s]<nn)
             44    {
             45        flag=0;
             46        for(int &j=cur[u]; j!=-1; j=edge[j].next)
             47        {
             48            int v=edge[j].v;
             49            if(edge[j].w>0&&dis[u]==dis[v]+1)
             50            {
             51                flag=1;
             52                if(edge[j].w<aug)aug=edge[j].w;
             53                pre[v]=u;
             54                u=v;
             55                if (u==t)
             56                {
             57                    flow+=aug;
             58                    while(u!=s)
             59                    {
             60                        u=pre[u];
             61                        edge[cur[u]].w-=aug;
             62                        edge[cur[u]^1].w+=aug;
             63                        //why?解釋偶數(shù)異或1為偶數(shù)+1,奇數(shù)異或1為奇數(shù)-1,
             64                        //顯然我們存的邊是從0開(kāi)始存的,
             65                        //所以偶數(shù),偶數(shù)+1是殘量網(wǎng)格中的兩條邊(無(wú)向邊)
             66                    }

             67                    aug=inf;
             68                }

             69                break;
             70            }

             71        }

             72        if (flag) continue;
             73        int mindis=nn;
             74        for(int j=head[u];j!=-1;j=edge[j].next)
             75        {
             76            int v=edge[j].v;
             77            if (edge[j].w>0&&dis[v]<mindis)
             78            {
             79                mindis=dis[v];
             80                cur[u]=j;
             81            }

             82        }

             83        if (--gap[dis[u]]==0)//間隙優(yōu)化
             84        {
             85            break;
             86        }

             87        dis[u]=mindis+1;
             88        gap[dis[u]]++;
             89        u=pre[u];
             90    }

             91    return flow;
             92}

             93int main()
             94{
             95    int a,b,c,i;
             96    int ans;
             97    while (scanf("%d%d",&n,&m)!=EOF)
             98    {
             99        s=0;
            100        t=n+1;
            101        cnt=0;
            102        memset(head,-1,sizeof(head));
            103        for(i=1; i<=n; i++)
            104        {
            105            scanf("%d%d",&a,&b);
            106            add(s,i,a);
            107            add(i,t,b);
            108        }

            109        for(i=1; i<=m; i++)
            110        {
            111            scanf("%d%d%d",&a,&b,&c);
            112            add(a,b,c);
            113            add(b,a,c);
            114        }

            115        ans=0;
            116        nn=n+2;
            117        ans=sap();
            118        printf("%d\n",ans);
            119    }

            120    return 0;
            121}

            122

            有兩個(gè)需要特別注意的循環(huán)撒
            那個(gè)int j那個(gè)很奇怪,怪我語(yǔ)言沒(méi)學(xué)好
             

            posted on 2012-03-30 15:39 jh818012 閱讀(297) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評(píng)論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當(dāng)于是 取余3的意思 因?yàn)?3 的 二進(jìn)制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄](méi)
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
            • --王私江
            久久精品无码一区二区app| 伊人久久成人成综合网222| 亚洲国产精品无码久久98| 久久精品国产亚洲AV久 | 日韩人妻无码精品久久久不卡 | 久久亚洲国产成人影院| 无码国内精品久久综合88| 久久久无码一区二区三区| 久久综合欧美成人| 久久午夜福利无码1000合集| 97精品伊人久久大香线蕉app| 久久精品国产亚洲7777| 色偷偷久久一区二区三区| 久久www免费人成精品香蕉| 亚洲av伊人久久综合密臀性色| 青草影院天堂男人久久| 亚洲午夜无码久久久久| 久久久久久久综合日本| 亚洲精品国产成人99久久| 国产偷久久久精品专区| 久久久久亚洲av毛片大| 国产精品久久久久9999| 亚洲色大成网站www久久九| 青青草原综合久久大伊人导航 | 久久久www免费人成精品| 91精品国产高清久久久久久国产嫩草| 国产精品久久久久久久人人看| 亚洲国产精品一区二区久久| 国产精品久久网| 色综合久久久久无码专区| 久久久www免费人成精品| 佐藤遥希在线播放一二区 | 性高朝久久久久久久久久| 欧美久久综合性欧美| 国产精品久久网| 久久99精品久久久久久| 久久r热这里有精品视频| 精品精品国产自在久久高清 | 久久成人小视频| 伊人久久无码精品中文字幕| 欧美麻豆久久久久久中文|