设为首页 加入收藏

TOP

HDU 3259 Wormholes
2015-07-20 18:01:31 来源: 作者: 【 】 浏览:2
Tags:HDU 3259 Wormholes

题意:就是给你一个n,m,t n代表有多少个点,m代表有多少个双向的边 t代表的是虫洞,现在要你判读是否还可以穿越到过去的点

虫洞的意思是给你的边是单向的,并且是负权值(输入的时候是正数)




思路:是否可以穿越回过去的点,即有没有负环,果断套用模板,dijkstra算法不能检测负环

AC代码:

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         using namespace std; #define maxn 520 const int INF = 0x3fffffff; struct Edge { int from,to,dist; }; struct BellmanFord { int n,m; vector
        
          edges; vector
         
           G[maxn]; bool inq[maxn]; int d[maxn]; int p[maxn]; int cnt[maxn]; Edge e; void init(int n) { this->n=n; for(int i=0;i
          
           Q; memset(inq,0,sizeof(inq)); memset(cnt,0,sizeof(cnt)); for(int i=0;i
           
            d[u]+e.dist) { d[e.to]=d[u]+e.dist; p[e.to]=G[u][i]; if(!inq[e.to]) { Q.push(e.to); inq[e.to]=true; if(++cnt[e.to]>n) return true; } } } } return false; } }; int main() { int a,b,c,i,node,m,t,case1,k; bool j; scanf("%d",&case1); while(case1--) { scanf("%d %d %d",&node,&m,&t); if(node==0&&m==0)break; BellmanFord tu; tu.init(node); for(i=0;i
            
             

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 3254 Corn Fields 状态压缩DP.. 下一篇POJ 3189 Steady Cow Assignment(..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: