Is the Information Reliable?(差分约束)
来源:互联网 发布:数据擦除机 编辑:程序博客网 时间:2024/05/22 00:48
Is the Information Reliable?Crawling in process...Crawling failedTime Limit:3000MS Memory Limit:131072KB 64bit IO Format:%I64d & %I64u
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 withN 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 stationB, 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 integersN (0 < N ≤ 1000) and M (1 ≤ M ≤ 100000).The nextM 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 arrangeN 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
题意:有N个车站,给出一些点的精确信息和模糊信息,精确信息给出两点的位置和距离,模糊信息给出两点的位置,但距离大于等于一。试确定是否所有的信息满足条件
思路:对于精确信息,可以得出两个差分条件,b-a = c;可以化为b-a >= c && a - b <= -c;(因为是精确信息,故要建立双向边)
对于模糊信息,只能得出一个差分条件,可以化为 b - a <= 1;所以a <= b-1;说明b到a有一条长度为-1的边;(模糊信息,建立单向边)
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;#define inf 9999999999;struct node{ int u,v,w;} edge[200000];int dis[200000];int n,m,cnt;int Bellman_ford(){ int i,j; int flag; memset(dis,0,sizeof(dis)); for(i=0;i<n;i++) { flag = 0; for(j=0;j<cnt;j++) { if(dis[edge[j].v]>dis[edge[j].u]+edge[j].w) { dis[edge[j].v]=dis[edge[j].u]+edge[j].w; flag=1; } } if(!flag) break; } for(j=0;j<cnt;j++) { if(dis[edge[j].v]>dis[edge[j].u]+edge[j].w) return 1; } return 0;}int main(){ int i,j; int u,v,w; char str; while(~scanf("%d %d",&n,&m)) { cnt=0; for(i=0; i<m; i++) { getchar(); scanf("%c",&str); if(str=='P') { scanf("%d %d %d",&u,&v,&w); edge[cnt].u=u; edge[cnt].v=v; edge[cnt].w=w; cnt++; edge[cnt].u=v; edge[cnt].v=u; edge[cnt].w=-w; cnt++; } else { scanf("%d %d",&u,&v); edge[cnt].u=v; edge[cnt].v=u; edge[cnt].w=-1; cnt++; } } if(Bellman_ford()) puts("Unreliable"); else puts("Reliable"); } return 0;}
- poj 2983 Is the Information Reliable?(差分约束)
- Is the Information Reliable?(差分约束)
- poj2983--Is the Information Reliable?(差分约束)
- POJ 2983Is the Information Reliable? (差分约束)
- POJ 2983 Is the Information Reliable?(差分约束)
- POJ 2983 Is the Information Reliable?(差分约束)
- poj_2983 Is the Information Reliable?(差分约束)
- pku 2983 Is the Information Reliable?(差分约束系统)
- POJ 2983 Is the Information Reliable(差分约束系统)
- POJ--2983[Is the Information Reliable?] 差分约束
- poj 2983 差分约束Is the Information Reliable?
- poj2983(差分约束系统)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? 差分约束
- kvm window2008虚拟机安装vitio驱动记录
- Clairewd’s message
- SVN复制出日志信息
- [昆仑叶哲华] 企业战略中品牌战略规划要注意的问题
- GO語言基礎教程:array,slice,map
- Is the Information Reliable?(差分约束)
- HDU4973A simple simulation problem.(线段树,区间更新)
- cloudera 部署Hadoop
- Lua学习笔记 第九章 协同程序 —— coroutine
- 循环计数器LoopCount
- VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)
- C++中 string 的用法大全(转)
- win32获取文件版本信息
- STM32之中断与事件---中断与事件的区别