POJ 2983 Is the Information Reliable?

来源:互联网 发布:rtl8710编程方法 编辑:程序博客网 时间:2024/05/16 18:45
Is the Information Reliable?
Time Limit: 3000MS
Memory Limit: 131072KTotal Submissions: 11148
Accepted: 3500

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
题目的意思是:当输入为P时,输入三个数,a-b=c,即a-b>=c&&b-a<=c;
当输入为V时,a与b的距离>=1;
求最长路,若存在最长路,则输出Unreliable
<span style="font-size:18px;">#include <iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;int inf=10000000;struct node{    int u,v,w;} edge[200001];int dis[200001];int n,m,cnt;int bf(){    int flag;    int i,j;    memset(dis,0,sizeof(dis));    for(i=1; i<=n; i++)    {        flag=0;        for(j=0; j<cnt; j++)        {            if(dis[edge[j].u]<dis[edge[j].v]+edge[j].w)            {                dis[edge[j].u]=dis[edge[j].v]+edge[j].w;                flag=1;            }        }        if(flag==0)            break;    }    if(flag) printf("Unreliable\n");    else        printf("Reliable\n");}int main(){    int i,j,a,b,c,d,e;    char ch;    while(scanf("%d%d",&n,&m)!=EOF)    {        cnt=0;        for(i=1; i<=m; i++)        {            getchar();            scanf("%c",&ch);            if(ch=='P')            {                scanf("%d%d%d",&a,&b,&c);                edge[cnt].u=a;                edge[cnt].v=b;                edge[cnt].w=c;                cnt++;                edge[cnt].u=b;                edge[cnt].v=a;                edge[cnt].w=-c;                cnt++;            }            else            {                scanf("%d%d",&d,&e);                edge[cnt].u=d;                edge[cnt].v=e;                edge[cnt].w=1;                cnt++;            }        }        bf();    }    return 0;}</span>


0 0
原创粉丝点击