博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wormholes
阅读量:4625 次
发布时间:2019-06-09

本文共 1560 字,大约阅读时间需要 5 分钟。

第一次写spfa,写的有点乱,凑合着看吧。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #define MAXN 52000 8 using namespace std; 9 const int INF=1<<28;10 bool vis[MAXN];11 int head[MAXN];12 int next[MAXN];13 int dis[MAXN];14 struct node15 {16 int u,v,w;17 }p[MAXN];18 int e,n,m;19 int cnt[MAXN];20 void addnode(int u,int v,int w)21 {22 p[e].u=u;23 p[e].v=v;24 p[e].w=w;25 next[e]=head[u];26 head[u]=e++;27 }28 bool relax(int u,int v,int w)29 {30 if(dis[v]>dis[u]+w)31 {32 dis[v]=dis[u]+w;33 return true;34 }35 return false;36 }37 bool spfa(int rc)38 {39 memset(vis,false,sizeof(vis));40 memset(cnt,0,sizeof(cnt));41 for(int i=1;i<=n;i++)42 dis[i]=INF;43 dis[rc]=0;44 vis[rc]=true;45 queue
q;46 q.push(rc);47 while(!q.empty()){48 int pre=q.front();49 q.pop();50 vis[pre]=false;51 for(int i=head[pre];i+1;i=next[i])52 {53 if(relax(pre,p[i].v,p[i].w)&&!vis[p[i].v]){54 if((++cnt[p[i].v])>n) return false;55 q.push(p[i].v);56 vis[p[i].v]=true;57 }58 }59 }60 return true;61 }62 int main()63 {64 int t,w,ww,u,v;65 cin>>t;66 while(t--){67 memset(head,-1,sizeof(head));68 memset(next,-1,sizeof(next));69 e=0;70 cin>>n>>m>>ww;71 for(int i=1;i<=m;i++)72 {73 cin>>u>>v>>w;74 addnode(u,v,w);75 addnode(v,u,w);76 }77 for(int i=1;i<=ww;i++)78 {79 cin>>u>>v>>w;80 addnode(u,v,(-1*w));81 }82 if(!spfa(1))83 printf("YES\n");84 else85 printf("NO\n");86 }87 return 0;88 }
View Code

 

转载于:https://www.cnblogs.com/fanminghui/p/3239563.html

你可能感兴趣的文章
hdu1166 线段树单点修改与区间查询
查看>>
asp.net -mvc框架复习(7)-基于MVC搭建用户登录项目框架
查看>>
CSS background-clip 属性
查看>>
python中函数作用域
查看>>
C#版清晰易懂TCP通信原理解析(附demo)
查看>>
系统自带的粒子系统
查看>>
Laravel 框架的主要版本
查看>>
pandas学习笔记 - 常见的数据处理方式
查看>>
云监控中的告警
查看>>
大题的简单解答
查看>>
CSS3复选框动画
查看>>
Base64.java 工具类
查看>>
ExtJS遮罩层Ext.loadMask
查看>>
ArcPy开发教程2-管理地图文档1
查看>>
过滤器的使用
查看>>
软件测试
查看>>
Response.Status http协议状态代码
查看>>
BZOJ4925 城市规划
查看>>
Bootstrap 辅助类
查看>>
TCP、UDP、HTTP、SOCKET之间的区别
查看>>