poj3259Wormholes

题目链接:http://poj.org/problem?id=3259

用bellman-ford判负环。

复制代码
 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=520;
 4 const int maxe=6000;
 5 const int inf=0x3f3f3f3f;
 6 int t,n,m,w;
 7 int u,v,c;
 8 int dis[maxn];
 9 struct node
10 {
11     int u,v,w,nex;
12 }e[maxe];
13 
14 bool bellman()
15 {
16     int flag=1;
17     for(int i=0;i<=n;i++){
18         dis[i]=inf;
19     }
20         dis[1]=0;
21     for(int i=0;i<n;i++)
22     {
23         flag=0;
24         for(int j=0;j<m;j++)
25             if(dis[e[j].v]>dis[e[j].u]+e[j].w){
26                 dis[e[j].v]=dis[e[j].u]+e[j].w;
27             flag=1;
28         }
29 
30         if(!flag) break;
31         if(i==n-1) return 1;
32 
33     }
34     return 0;
35 
36 }
37 
38 int main()
39 {
40     scanf("%d",&t);
41     while(t--)
42     {
43 
44         scanf("%d%d%d",&n,&m,&w);
45         for(int i=0;i<m;i++)
46         {
47             scanf("%d%d%d",&u,&v,&c);
48             e[i].u=u;
49             e[i].v=v;
50             e[i].w=c;
51             e[i+m].u=v;
52             e[i+m].v=u;
53             e[i+m].w=c;
54         }
55         m<<=1;
56         for(int i=m;i<w+m;i++)
57         {
58             scanf("%d%d%d",&u,&v,&c);
59             e[i].u=u;
60             e[i].v=v;
61             e[i].w=-c;
62         }
63         m+=w;
64         if(bellman()) puts("YES");
65         else puts("NO");
66     }
67 }
复制代码

 

posted @   yijiull  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
点击右上角即可分享
微信分享提示