Is the Information Reliable? -POJ2983差分约束
| Time Limit: 3000MS | Memory Limit: 131072K |
|---|
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 4
P 1 2 1
P 2 3 1
V 1 3
P 1 3 1
5 5
V 1 2
V 2 3
V 3 4
V 4 5
V 3 5
Sample Output
Unreliable
Reliable
Source
POJ Monthly–2006.08.27, Dagger
题意:有n个防御塔和m个情报,判断这些情报是不是可信,情报有两种:(1):P u v w 表示u在v的w光年处 。(2):V u v 表示u在v北的一光年之外(包括一光年)
思路:Dis[i]表示i在源点北面Dis[i]光年,所以对于(1):P uv w 可以表示为Dis[u]-Dis[v]=w,所以Dis[u]-Dis[v]>=w且Dis[v]-Dis[u]>=-w,对于(2): V u v 可以表示为Dis[u]-Dis[v]>=1,所以建立图,跑最长路,判断是不是有矛盾即正环,我用的
SPFA,要判断自环。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <string>
#include <vector>
#include <stack>
#include <iostream>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MaxN = 1100;
const int MaxM = 100100;
typedef struct node
{
int v,w,next;
}Line;
Line Li[MaxM*2];
int Head[MaxN],top;
int Dis[MaxN],Du[MaxN];
bool vis[MaxN];
int n,m;
void AddEdge(int u,int v,int w)
{
Li[top].v = v ; Li[top].w = w;
Li[top].next = Head[u];
Head[u] = top++;
}
bool SPFA()
{
queue<int>Q;
for(int i=1;i<=n;i++)//相当于有一个超级源点
{
Dis[i] = 0;
vis[i]=true;
Du[i]=1;
Q.push(i);
}
while(!Q.empty())
{
int u = Q.front();
Q.pop();
if(Du[u]>n)//有矛盾
{
return false;
}
for(int i = Head[u];i!=-1;i = Li[i].next)
{
int v = Li[i].v;
if(Dis[v]<Dis[u]+Li[i].w)
{
Dis[v] = Dis[u]+Li[i].w;
if(!vis[v])
{
Q.push(v);
vis[v] = true;
Du[v]++;
}
}
}
vis[u]=false;
}
return true;
}
int main()
{
char Op[5];
int u,v,w;
while(~scanf("%d %d",&n,&m))
{
memset(Head,-1,sizeof(Head));
top = 0;
bool flag=false;
for(int i=1;i<=m;i++)
{
scanf("%s",Op);
if(Op[0]=='P')
{
scanf("%d %d %d",&u,&v,&w);
if(u==v&&w!=0)//自环
{
flag=true;
}
AddEdge(u,v,w);
AddEdge(v,u,-w);
}
else
{
scanf("%d %d",&u,&v);
if(u==v)
{
flag=true;
}
AddEdge(u,v,1);
}
}
if(flag||!SPFA())
{
printf("Unreliable\n");
}
else
{
printf("Reliable\n");
}
}
return 0;
}
Is the Information Reliable? -POJ2983差分约束的更多相关文章
- Is the Information Reliable?(差分约束)
Description The galaxy war between the Empire Draco and the Commonwealth of Zibu broke out 3 years a ...
- POJ 2983:Is the Information Reliable?(差分约束)
题目大意:有n个点在一条直线上,有两类关系:P(x,y,v)表示x在y北边v距离处,V(x,y)表示x在y北边至少1距离出,给出一些这样的关系,判断是否有矛盾. 分析: 差分约束模板题,约束条件P:a ...
- POJ 2983 Is the Information Reliable? 依旧差分约束
http://poj.org/problem?id=2983 题目大意: 星际大战开始了.你购买了情报,需要判断它的准确性.已知地方的根据地在由南向北排成一条直线.P A B X,表示A在B北面距离X ...
- poj2983--Is the Information Reliable?(差分约束)
Is the Information Reliable? Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 11125 A ...
- 【POJ 2983】Is the Information Reliable?(差分约束系统)
id=2983">[POJ 2983]Is the Information Reliable? (差分约束系统) Is the Information Reliable? Time L ...
- POJ 2983 Is the Information Reliable?(差分约束系统)
http://poj.org/problem?id=2983 题意:N 个 defense stations,M条消息,消息有精确和模糊之分,若前边为P.则为精确消息,有两个defense stati ...
- POJ 2983 Is the Information Reliable? 差分约束
裸差分约束. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...
- POJ 2983 Is the Information Reliable? 信息可靠吗 (差分约束,spfa)
题意:有n个站排成一列,针对每个站的位置与距离关系,现有多个约束条件,约束条件分两种:(1)确定的.明确说明站a距离站b多少个单位距离.(2)不确定的.只知道a在b的左边至少1个单位距离. 根据已知 ...
- 【poj2983】 Is the Information Reliable?
http://poj.org/problem?id=2983 (题目链接) 一个SB错误TLE了半个小时... 题意 一条直线上有n个点,给出m条信息,若为P则表示点A在点B的北方X米,若为V则表示A ...
随机推荐
- outlook2013 更改邮件文件位置
找了许多也是不行, 最后自己来多次试验,原来就是这么容易 ., 1: 先增加你的邮件账号,然后找到数据文件的位置 2: 关闭OUTLOOK 2013,把上一步中的数据文件复制到你要的位置,如D:\ou ...
- mongostat用法
mongostat是mongoDB自带的工具,用于检测mongodb的运行状态. mongostat用法 Test:Test/node-131 / # mongostat --help Usage: ...
- OC----面向对象
创建一个类 comm+n 实例变量的可见度 @public,@protect@private @public // 共有的,在类的内部和外部都可以进行访问 @protected // 受保护的, ...
- JAVAWEB项目如何实现验证码
验证码基础 一.什么是验证码及它的作用 :验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意 ...
- logstash插件
codec 插件 goeip插件 input { file { path => ["/data/nginx/logs/access.log"] type =>&qu ...
- C#类和接口
1.类的定义 C#使用类关键字class定义类,如: public class MyClass { } 2.类的继承 类继承使用: public class BaseClass { } public ...
- docker 使用非加密registry
配置docker成为服务,自启动 sudo systemctl enable docker.service 启动服务 sudo systemctl start docker docker默认要求我们使 ...
- sprintf()函数的用法
Visual C++ sprintf()函数用法 转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,spr ...
- Leetcode: Sequence Reconstruction
Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. Th ...
- Webform Application、ViewState
Application(全局对象) Application对象生存期和Web应用程序生存期一样长,生存期从Web应用程序网页被访问开始,HttpApplication类对象Application被自动 ...