bzoj3436(差分约束系统)
来源:互联网 发布:花千骨天羽进阶数据 编辑:程序博客网 时间:2024/06/08 06:06
递归版的spfa,不了解其性质
#include<cstdio>#include<cmath>#include<cstdlib>#include<algorithm>#include<cstring>#include<queue>using namespace std;const int inf=0x3f3f3f3f;const int N=50005;int n,m;int head[50005],tot,dis[N],tt[N],flag;struct aa{int to,pre,dis;}edge[500006];void addedge(int x,int y,int z){edge[++tot].to=y;edge[tot].pre=head[x];edge[tot].dis=z;head[x]=tot;}bool b[N];void spfa(int u){if (flag) return ;b[u]=true;for (int i=head[u];i;i=edge[i].pre)if (dis[edge[i].to]>dis[u]+edge[i].dis){int v=edge[i].to;dis[v]=dis[u]+edge[i].dis;if (b[v]) {flag=1;return ;}spfa(v);}b[u]=false;}int main(){scanf("%d%d",&n,&m);int p,x,y,z;for (int i=1;i<=m;i++){scanf("%d",&p);switch(p){case 1:scanf("%d%d%d",&x,&y,&z);addedge(x,y,-z);break;case 2:scanf("%d%d%d",&x,&y,&z);addedge(y,x,z);break;case 3:scanf("%d%d",&x,&y);addedge(x,y,0);addedge(y,x,0);break;}}memset(dis,inf,sizeof(dis));for (int i=1;i<=n;i++){dis[i]=0;spfa(i);}if (!flag) printf("Yes");else printf("No");return 0;}
0 0
- bzoj3436(差分约束系统)
- 【bzoj3436】 小K的农场 差分约束系统
- bzoj3436 小K的农场 差分约束系统
- [BZOJ3436]小K的农场(差分约束)
- 【BZOJ3436】小K的农场(差分约束)
- [bzoj3436][差分约束]小K的农场
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 【差分约束系统】
- 差分约束系统
- 差分约束系统
- 差分约束系统
- C++中的左值与右值
- weblogic面试题
- OSI 七层模型 VS TCP/IP 协议族
- 面向对象编程OOP的优点
- JAVA面试题集(2)
- bzoj3436(差分约束系统)
- 文章标题
- Ibatis如何调用存储过程?
- linux kernel是如何做到释放仅在启动时使用的内存的?
- 修改.srt格式字幕文件
- Java方向软件笔试题
- angular初学者福利啦(列表增、删、改)
- BeetlSQL 实现 ORMapping
- leetcode-java-326. Power of Three