POJ 2983 (差分约束)
来源:互联网 发布:大数据应用于电力工程 编辑:程序博客网 时间:2024/05/16 12:25
Description
The galaxy war between the Empire Draco and the Commonwealth of Zibu broke out 3 years ago. Draco established a line of defense called Grot. Grot is a straight line with N defense stations. Because of the cooperation of the stations, Zibu’s Marine Glory cannot march any further but stay outside the line.
A mystery Information Group X benefits form selling information to both sides of the war. Today you the administrator of Zibu’s Intelligence Department got a piece of information about Grot’s defense stations’ arrangement from Information Group X. Your task is to determine whether the information is reliable.
The information consists of M tips. Each tip is either precise or vague.
Precise tip is in the form of P A B X
, means defense station A is X light-years north of defense station B.
Vague tip is in the form of V A B
, means defense station A is in the north of defense station B, at least 1 light-year, but the precise distance is unknown.
Input
There are several test cases in the input. Each test case starts with two integers N (0 < N ≤ 1000) and M (1 ≤ M ≤ 100000).The next M line each describe a tip, either in precise form or vague form.
Output
Output one line for each test case in the input. Output “Reliable” if It is possible to arrange N defense stations satisfying all the M tips, otherwise output “Unreliable”.
Sample Input
3 4P 1 2 1P 2 3 1V 1 3P 1 3 15 5V 1 2V 2 3V 3 4V 4 5V 3 5
Sample Output
UnreliableReliable
Source
题意:n个点,m个约束条件。P: u v w 表示u点距v点w。V: u v 表示u点距v点至少为1。问你这些信息是否可靠,也就是说有没有矛盾的地方。
分析:写了一个Bellman-Ford算法。注意图的连通性。
code:
#include<stdio.h>#define INF 1e9int cnt;struct Edge{ int from, to, cost;}e[200010];void add(int u, int v, int w){ e[cnt].from = u; e[cnt].to = v; e[cnt++].cost = w;}int main(){ int n, m, d[1010]; char c; while(~scanf("%d%d", &n,&m)) { cnt = 0; for(int i=0; i<m; i++) { getchar(); scanf("%c", &c); int A, B, D; if(c == 'P') { scanf("%d%d%d", &A,&B,&D); add(A,B,-D); add(B,A,D); } else { scanf("%d%d", &A,&B); add(A,B,-1); } } for(int i=1; i<=n; i++) d[i] = 0; //原点有可能不与负环连通 bool update; //所以将初始值全赋值为0,这样负环就一定能被查出,因为此时图是连通的 for(int j=0; j<n; j++) { update = false; for(int i=0; i<cnt; i++) { if(d[e[i].from]+e[i].cost < d[e[i].to]) { d[e[i].to] = d[e[i].from]+e[i].cost; update = true; } } if(!update) break; } if(update) puts("Unreliable"); else puts("Reliable"); } return 0;}
- poj 2983(差分约束)
- POJ 2983 (差分约束)
- poj 2983 差分约束
- poj 2983(差分约束系统,bellman)
- POJ 2983 (差分约束系统Spfa)
- POJ 2983(差分约束-有无解)
- poj 2983 Is the Information Reliable?(差分约束)
- POJ 2983Is the Information Reliable? (差分约束)
- POJ 2983 Is the Information Reliable?(差分约束)
- POJ 2983 Is the Information Reliable?(差分约束)
- Poj 2983 (差分约束系统)
- POJ 2983 SPFA 差分约束
- poj 2983 差分约束+SPFA
- poj 2983 (差分约束系统)
- poj 2983 spfa差分约束
- POJ 2983 差分约束系统
- poj 2983 差分约束系统 题解
- poj 1201 Intervals(差分约束)
- Sicily 1543. Completing Brackets
- spring factory-method
- [leetcode]Number of Islands
- service解析与应用
- Web meta 作用
- POJ 2983 (差分约束)
- Unity使用IL2CPP构建IOS64位中System.Enum.IsDefined的问题
- 使用CFStringTransform方便的进行中文名字的排序
- container_of用法
- 404 not found & java.lang.Exception: Socket bind failed: 730048
- 自守数
- WebLogic中配置给管理发送警告邮件 (视频)
- 软件开发和产品经理是怎么回事
- java 关于xml的注解,自动生成xml文件 - @XML***