• <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
            這題點有20000,邊有200000,所以要寫鏈表或者數組模擬
            終于找了個能看懂的了
            而且我覺著這代碼特別神有幾個地方
              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?解釋偶數異或1為偶數+1,奇數異或1為奇數-1,
             64                        //顯然我們存的邊是從0開始存的,
             65                        //所以偶數,偶數+1是殘量網格中的兩條邊(無向邊)
             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)//間隙優化
             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

            有兩個需要特別注意的循環撒
            那個int j那個很奇怪,怪我語言沒學好
             

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

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

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            久久久久久九九99精品| 久久精品无码一区二区三区免费| 伊人久久综合成人网| 国产成人精品久久一区二区三区av| 伊人久久大香线焦综合四虎| 久久久久久久综合狠狠综合| 色偷偷偷久久伊人大杳蕉| 好久久免费视频高清| 亚洲国产天堂久久久久久 | 久久国产精品无| 欧美黑人又粗又大久久久| 精品综合久久久久久88小说| 久久人人爽人人爽人人片AV不| 人人狠狠综合久久亚洲婷婷| 伊人久久大香线蕉成人| 一级做a爱片久久毛片| 亚洲精品无码久久久久去q| 国产精品成人99久久久久| 久久精品午夜一区二区福利 | 亚洲欧美日韩精品久久亚洲区| 青青草原精品99久久精品66| 亚洲人AV永久一区二区三区久久 | 青青青国产成人久久111网站| 国产aⅴ激情无码久久| 久久永久免费人妻精品下载| 国产一区二区精品久久凹凸| 国产成人无码久久久精品一| 久久精品国产乱子伦| 性做久久久久久久久老女人| 品成人欧美大片久久国产欧美| 精品国产乱码久久久久久郑州公司| 99久久做夜夜爱天天做精品| 伊人久久无码精品中文字幕| 久久国产精品波多野结衣AV| 2020久久精品国产免费| 久久精品国产精品青草| 久久福利青草精品资源站| 久久综合欧美成人| 久久99精品久久久久久9蜜桃| 99热热久久这里只有精品68| AA级片免费看视频久久|