POJ训练计划2983_Is the Information Reliable?(差分约束)
2014-08-22 13:58
429 查看
解题报告
思路:
求解:
p:a-b=x
v:a-b>=1
的方程
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
int v,w,next;
} edge[220000];
int head[1111],dis[1111],vis[1111],coun[1111],cnt,n,m,s,t,f;
void add(int u,int v,int w)
{
edge[cnt].v=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt++;
}
void spfa()
{
for(int i=0;i<=n;i++)
{
dis[i]=inf;
vis[i]=0;
}
dis[s]=0;
vis[s]=1;
queue<int >Q;
Q.push(s);
while(!Q.empty())
{
int u=Q.front();
Q.pop();
vis[u]=0;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].v;
if(dis[v]>dis[u]+edge[i].w)
{
dis[v]=dis[u]+edge[i].w;
if(!vis[v])
{
coun[v]++;
if(coun[v]>n)
{
f=1;
break;
}
vis[v]=1;
Q.push(v);
}
}
}
}
}
int main()
{
int i,j,u,v,w;
char ch[10];
while(~scanf("%d%d",&n,&m))
{
s=f=0;
memset(head,-1,sizeof(head));
memset(coun,0,sizeof(coun));
cnt=0;
for(i=0; i<m; i++)
{
scanf("%s%d%d",ch,&u,&v);
if(ch[0]=='P')
{
scanf("%d",&w);
add(v,u,w);
add(u,v,-w);
}
else
{
add(u,v,-1);
}
}
for(i=1; i<=n; i++)
{
add(0,i,0);
}
spfa();
if(f)
printf("Unreliable\n");
else printf("Reliable\n");
}
return 0;
}
Is the Information Reliable?
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
Vague tip is in the form of
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
Sample Output
Source
POJ Monthly--2006.08.27, Dagger
思路:
求解:
p:a-b=x
v:a-b>=1
的方程
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
int v,w,next;
} edge[220000];
int head[1111],dis[1111],vis[1111],coun[1111],cnt,n,m,s,t,f;
void add(int u,int v,int w)
{
edge[cnt].v=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt++;
}
void spfa()
{
for(int i=0;i<=n;i++)
{
dis[i]=inf;
vis[i]=0;
}
dis[s]=0;
vis[s]=1;
queue<int >Q;
Q.push(s);
while(!Q.empty())
{
int u=Q.front();
Q.pop();
vis[u]=0;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].v;
if(dis[v]>dis[u]+edge[i].w)
{
dis[v]=dis[u]+edge[i].w;
if(!vis[v])
{
coun[v]++;
if(coun[v]>n)
{
f=1;
break;
}
vis[v]=1;
Q.push(v);
}
}
}
}
}
int main()
{
int i,j,u,v,w;
char ch[10];
while(~scanf("%d%d",&n,&m))
{
s=f=0;
memset(head,-1,sizeof(head));
memset(coun,0,sizeof(coun));
cnt=0;
for(i=0; i<m; i++)
{
scanf("%s%d%d",ch,&u,&v);
if(ch[0]=='P')
{
scanf("%d",&w);
add(v,u,w);
add(u,v,-w);
}
else
{
add(u,v,-1);
}
}
for(i=1; i<=n; i++)
{
add(0,i,0);
}
spfa();
if(f)
printf("Unreliable\n");
else printf("Reliable\n");
}
return 0;
}
Is the Information Reliable?
Time Limit: 3000MS | Memory Limit: 131072K | |
Total Submissions: 11068 | Accepted: 3463 |
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
相关文章推荐
- 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? 信息可靠吗 (差分约束,spfa)
- POJ 2983 Is the Information Reliable (差分约束 bell/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? 差分约束