poj 3259 bellman-ford
来源:互联网 发布:netty 监听多个端口 编辑:程序博客网 时间:2024/05/29 11:27
果然还是水啊。。险过。。差点就TLE了。。
题意:
n个点,正常的路是双向的,wormholes是单向的而且是负权值边。求图中有没有负权值回路。
#include<stdio.h>#define MX 10000000struct point {int in,out,w;}eg[5200];int s[1050],dist[1050],n,m,w,u,v,t;int bellman(int v0){for(int i=1;i<=n;i++)dist[i]=MX;dist[v0]=0;for(int i=0;i<n-1;i++)for(int j=0;j<2*m+w;j++)if(dist[eg[j].in]<MX&&dist[eg[j].in]+eg[j].w<dist[eg[j].out])dist[eg[j].out]=dist[eg[j].in]+eg[j].w;for(int i=0;i<2*m+w;i++)if(dist[eg[i].in]+eg[i].w<dist[eg[i].out])return -1;return 1;}int main(){int f;scanf("%d",&f);while(f--){int k=0,kk=0,flag=0;scanf("%d%d%d",&n,&m,&w);for(int i=0;i<m;i++){scanf("%d%d%d",&u,&v,&t);eg[k].in=u;eg[k].out=v;eg[k].w=t;k++;eg[k].in=v;eg[k].out=u;eg[k].w=t;k++;}for(int i=0;i<w;i++){scanf("%d%d%d",&u,&v,&t);eg[k].in=u;eg[k].out=v;eg[k].w=t*(-1);s[kk++]=u;k++;}for(int i=0;i<kk;i++){if(bellman(s[i])==-1){printf("YES\n");flag=1;break;}}if(!flag)printf("NO\n");}return 0;}
靠 坑啊看了别人的代码。。都是从1开始就行啊,那我为啥还循环呀。。。我个蠢啊。。改了改,90+过了。。上边那个1700+过的。。。疯了。。
#include<stdio.h>#define MX 10000000struct point {int in,out,w;}eg[5200];int s[1050],dist[1050],n,m,w,u,v,t;int bellman(int v0){for(int i=1;i<=n;i++)dist[i]=MX;dist[v0]=0;for(int i=0;i<n-1;i++)for(int j=0;j<2*m+w;j++)if(dist[eg[j].in]<MX&&dist[eg[j].in]+eg[j].w<dist[eg[j].out])dist[eg[j].out]=dist[eg[j].in]+eg[j].w;for(int i=0;i<2*m+w;i++)if(dist[eg[i].in]+eg[i].w<dist[eg[i].out])return -1;return 1;}int main(){int f;scanf("%d",&f);while(f--){int k=0,kk=0,flag=0;scanf("%d%d%d",&n,&m,&w);for(int i=0;i<m;i++){scanf("%d%d%d",&u,&v,&t);eg[k].in=u;eg[k].out=v;eg[k].w=t;k++;eg[k].in=v;eg[k].out=u;eg[k].w=t;k++;}for(int i=0;i<w;i++){scanf("%d%d%d",&u,&v,&t);eg[k].in=u;eg[k].out=v;eg[k].w=t*(-1);s[kk++]=u;k++;}if(bellman(1)==-1)printf("YES\n"); else printf("NO\n");}return 0;
想了想,也对,只是判断负权值回路就行了,所以何必把所有点都遍历一遍呢。。。所以v0不重要,只要是有负权值回路就行了。
- poj-3259 bellman-ford
- poj 3259 bellman-ford
- poj 3259 bellman-ford算法
- POJ 3259 Wormholes(bellman-ford)
- POJ 3259 Wormholes Bellman-Ford
- poj 3259 Wormholes(Bellman-Ford)
- Poj 3259 Bellman-Ford算法
- POJ 3259 Wormholes (Bellman-ford)
- POJ 3259 Wormholes 【bellman-ford】
- poj 3259 Wormholes (Bellman-ford)
- poj 3259 虫洞 bellman-ford
- poj 3259 Bellman-ford + SPFA
- 【POJ 3259 Wormholes】+ Bellman-Ford
- poj 3259 spfa + Bellman-Ford
- poj 3259 Wormholes(bellman-ford)
- poj 3259 Wormholes(SPFA || Bellman-Ford)
- poj 3259 Wormholes【Bellman-Ford Vs SPFA】
- poj 3259 Wormholes SPFA // Bellman-ford
- Android:adb shell am命令行发送Activity/Service/Broadcast
- hibernate的集合属性 .
- 百度、腾讯、搜狐、360等产品职位笔试智力题分析
- 正则表达式5——重复匹配
- WPF显示列表按字段排序
- poj 3259 bellman-ford
- HTML页面底脚浮动图片添加
- 图解ubuntu中修改计算机名
- 关于 'xterm': unknown terminal type的问题
- Mongodb的主从复制使用总结
- 正则表达式6——位置匹配
- 网络游戏程序员须知 收包与发包
- sql语句中获取datetime的日期部分或时间部分
- Android界面跳转的内存分析