• <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)題查看
            • --王私江
            国产亚洲婷婷香蕉久久精品| 99久久精品费精品国产| 性做久久久久久久久浪潮| 中文字幕精品久久| 久久99精品久久久久久hb无码| 亚洲国产精品久久久久久| 亚洲综合久久夜AV | 国产精品欧美久久久天天影视| 久久综合九色欧美综合狠狠| 久久久噜噜噜久久中文福利| 一本色道久久88综合日韩精品| 99久久er这里只有精品18| 久久精品国产欧美日韩99热| 青青草原综合久久大伊人精品| 精品国产青草久久久久福利| 久久精品无码免费不卡| 精品久久一区二区| 久久人人爽人人爽人人片av高请| 久久影院午夜理论片无码| 国产成人精品综合久久久| 国内精品伊人久久久久| 久久狠狠高潮亚洲精品| 日韩精品久久久久久免费| 国产精品99久久久精品无码| 久久人人爽人人爽人人片AV高清| 欧美午夜A∨大片久久 | 99精品国产99久久久久久97| 精品国产综合区久久久久久| 久久精品国产福利国产秒| 色综合久久中文字幕无码| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲精品成人久久久| 怡红院日本一道日本久久| 国产情侣久久久久aⅴ免费| 亚洲精品国产第一综合99久久| 欧美午夜A∨大片久久 | 久久久久久无码国产精品中文字幕| 国产国产成人久久精品| 久久久久99精品成人片| 久久99国产精品久久99小说| 精品国产乱码久久久久久人妻|