POJ 2983 Is the Information Reliable? (差分约束)
2012-08-09 10:12
579 查看
http://poj.org/problem?id=2983
题意:给出一些相对位置,问给出的数据是否正确;如样例一 P 1 2 1 表示1在2前面恰好一个单位,V 1 3 表示1在3前面至少一个单位
x1-x2=1 <=>x1-x2>=1 && x2-x1>=-1 (把等式变成两个不等式)
样例一列出的 不等式为
x1-x2>=1 (1)
x2-x1>=-1
x2-x3>=1 (2)
x3-x2>=-1
x1-x3>=1
x1-x3>=1
x3-x1>=-1 (3)
(1)(2)(3)左右各相加 得 0>=1 错误, 所以如果有负环说明数据有误
代码:(Bellman—Ford)
题意:给出一些相对位置,问给出的数据是否正确;如样例一 P 1 2 1 表示1在2前面恰好一个单位,V 1 3 表示1在3前面至少一个单位
x1-x2=1 <=>x1-x2>=1 && x2-x1>=-1 (把等式变成两个不等式)
样例一列出的 不等式为
x1-x2>=1 (1)
x2-x1>=-1
x2-x3>=1 (2)
x3-x2>=-1
x1-x3>=1
x1-x3>=1
x3-x1>=-1 (3)
(1)(2)(3)左右各相加 得 0>=1 错误, 所以如果有负环说明数据有误
代码:(Bellman—Ford)
#include<iostream> #include<cstdio> #include<cstring> #include<string> #define nMAX 1002 #define mMAX 205005 #define inf -9999999 using namespace std; int n; int dis[nMAX],s_edge; struct Edge { int u,v,w; }edge[mMAX]; void addedge(int u,int v,int w) { s_edge++; edge[s_edge].u=u; edge[s_edge].v=v; edge[s_edge].w=w; } bool Bellman_Ford() { int i,j,k; for(i=1;i<=n;i++) dis[i]=inf; dis[0]=0; bool fg; for(k=1;k<=n+1;k++) { fg=1; for(i=1;i<=s_edge;i++) if(dis[edge[i].v]-dis[edge[i].u]<edge[i].w) { dis[edge[i].v]=dis[edge[i].u]+edge[i].w; fg=0; } if(fg)break; } if(fg)return 1; return 0; } int main() { int i,j,w,m; char ch; while(~scanf("%d%d",&n,&m)) { s_edge=0; while(m--) { getchar(); scanf("%c %d %d",&ch,&i,&j); if(ch=='P') { scanf("%d",&w); addedge(j,i,w); addedge(i,j,-w); } else { addedge(j,i,1); } } for(i=1;i<=n;i++) addedge(0,i,0); if(Bellman_Ford()) printf("Reliable\n"); else printf("Unreliable\n"); } return 0; }
相关文章推荐
- POJ 2983 Is the Information Reliable?(差分约束)
- POJ 2983 Is the Information Reliable?(差分约束)
- POJ 2983 Is the Information Reliable? 信息可靠吗 (差分约束,spfa)
- POJ训练计划2983_Is the Information Reliable?(差分约束)
- poj 2983 Is the Information Reliable?(差分约束)
- POJ 2983 Is the Information Reliable? 依旧差分约束
- poj 2983 Is the Information Reliable?(差分约束)
- 【poj 2983】Is the Information Reliable? 差分约束
- POJ 2983 Is the Information Reliable? 依旧差分约束
- poj 2983 Is the Information Reliable? (差分约束)
- POJ 2983 Is the Information Reliable?(差分约束第一发)
- POJ-2983-Is the Information Reliable?(差分约束)
- poj 2983 差分约束Is the Information Reliable?
- poj 2983 Is the Information Reliable? 差分约束
- POJ 2983 Is the Information Reliable? (差分约束)
- POJ 2983 Is the Information Reliable?(差分约束)
- [POJ 2983]Is the Information Reliable?[差分约束]
- poj 2983 Is the Information Reliable?(差分约束)
- POJ 题目2983 Is the Information Reliable?(差分约束)
- POJ 2983 Is the Information Reliable (差分约束 bell/spfa判断负环)