• <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>

            POJ 3259 Wormholes


            Bellman_Ford 算法,

            利用Bellman_Ford算法判斷是否存在負回路。如果存在負回路就一定可以回到(不停的走這個回路,直到賺到的負值夠與回去的值抵消的),如果不存在一定不可以回去。
            用cin500+ms, 用scanf  100+ms

            #include<iostream>
            #include
            <stdio.h>
            using namespace std;
            const int INF=0x0fffffff;
            struct type
            {
                   
            int s,t;
                   
            int len;
            }edge[
            30000];

            int n,m,w,nedge=0;
            int d[505];
            bool Bellman_Ford()
            {
                 
            bool isPossible=false;
                 
            for(int j=1; j<=n; j++)d[j]=INF;
                 d[
            1]=0;
                 
            int u,v;
                 
            bool f;
                 
            for(int j=1; j<=n-1; j++)
                 {
                         f
            =0;
                         
            for(int k=1; k<=nedge; k++)
                         {
                                 u
            =edge[k].s; v=edge[k].t;
                                 
            if(d[v]>d[u]+edge[k].len)
                                             d[v]
            =d[u]+edge[k].len;
                                 f
            =1;            
                         }
                         
            if(f==0)return false;
                 }
              /*前面n-1次循環可以求出無負回路時的最短路徑,再來一次如果可以更新就一定有負回路。/*
                  
            for(int k=1; k<=nedge; k++)
                         {
                                 u
            =edge[k].s; v=edge[k].t;
                                 
            if(d[v]>d[u]+edge[k].len)
                                       {  d[v]
            =d[u]+edge[k].len; return 1;}
                                            
                         }
                 
                
            // system("pause");
                 return 0;
                 
            }

            int main()
            {
                
            int t;
                cin
            >>t;
                
            while(t--)
                {
                          
            int i,j,u,v,value;
                          scanf(
            "%d %d %d",&n,&m,&w);//cin>>n>>m>>w;
                          nedge=0;
                          
            for(int i=1; i<=m; i++)
                          {
                                  scanf(
            "%d %d %d",&u,&v,&value);//cin>>u>>v>>value;
                                  ++nedge;
                                  edge[nedge].s
            =u;
                                  edge[nedge].t
            =v;
                                  edge[nedge].len
            =value;
                                  
            ++nedge;
                                  edge[nedge].s
            =v;
                                  edge[nedge].t
            =u;
                                  edge[nedge].len
            =value;
                          }     
                              
                          
            for(int i=1; i<=w; i++)
                          {
                                  scanf(
            "%d %d %d",&u,&v,&value);//cin>>u>>v>>value;
                                  ++nedge;
                                  edge[nedge].s
            =u;
                                  edge[nedge].t
            =v;
                                  edge[nedge].len
            =-value;
                                  
                                 
            /* ++nedge;
                                  edge[nedge].s=v;
                                  edge[nedge].t=u;
                                  edge[nedge].len=-value;
                                  
            */
                          }
                          
                          
            if(Bellman_Ford())
                                     cout
            <<"YES"<<endl;
                          
            else       cout<<"NO"<<endl;
                 
                }
                system(
            "pause");
                
            return 0;
            }

            posted on 2010-08-09 19:38 田兵 閱讀(731) 評論(0)  編輯 收藏 引用 所屬分類: POJ

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            導航

            統計

            常用鏈接

            留言簿(2)

            隨筆分類(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            性欧美大战久久久久久久久 | 久久香蕉超碰97国产精品| 伊人久久大香线蕉成人| 色欲综合久久躁天天躁蜜桃| 欧美久久综合性欧美| 国内精品伊人久久久久777| 久久精品a亚洲国产v高清不卡| 精品国产91久久久久久久a| 久久毛片一区二区| 欧美国产成人久久精品| 精品精品国产自在久久高清| 亚洲精品乱码久久久久久久久久久久| 一本一本久久A久久综合精品| 蜜桃麻豆www久久| 日韩人妻无码一区二区三区久久99 | 99热精品久久只有精品| 久久天天躁狠狠躁夜夜躁2014| 国产精品一区二区久久精品| 国内精品久久久久影院老司| 99久久99久久精品国产片| 亚洲国产精品无码久久久秋霞2 | 久久香综合精品久久伊人| 亚洲国产天堂久久久久久| 国产精品免费看久久久香蕉 | 亚洲伊人久久综合中文成人网| 久久99精品国产麻豆| 国产偷久久久精品专区| 久久人人爽人人爽人人片AV东京热| 久久精品免费大片国产大片| 精品无码久久久久久久久久| 国产91久久综合| 伊人久久大香线蕉精品| 国产精品久久久久一区二区三区| 久久精品国产精品青草 | 久久综合给久久狠狠97色| av色综合久久天堂av色综合在| 狠狠精品久久久无码中文字幕| 伊人久久大香线蕉av不卡| 无码人妻久久一区二区三区免费丨 | 亚洲AV无码久久精品蜜桃| 伊人久久综合成人网|