zoukankan      html  css  js  c++  java
  • POJ 之 Is the Information Reliable?

    B - Is the Information Reliable?
    Time Limit:3000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u
    Submit Status

    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

    #include <stdio.h>
    #include <string.h>
    
    int n, m;
    int dis[1003];
    int cnt;
    struct N
    {
        int u;
        int v;
        int w;
    }s[200003];
    
    void add(int u, int v, int w )
    {
        s[cnt].u=u;
        s[cnt].v=v;
        s[cnt++].w=w;
    }
    
    void bellman_ford()
    {
        memset(dis, 0, sizeof(dis));
        int i, j;
        for(i=1; i<=n; i++)
        {
            for(j=0; j<cnt; j++) //检查每条边
            {
                if( dis[s[j].v] > dis[s[j].u] + s[j].w )
                    dis[s[j].v] = dis[s[j].u]+s[j].w ;
            }
        }
        for(i=0; i<cnt; i++)
        {
            if(dis[s[i].v] > dis[s[i].u]+s[i].w )
            break;
        }
        if(i<cnt)
            printf("Unreliable
    ");
        else
            printf("Reliable
    ");
    }
    
    
    int main()
    {
        int i, j;
        char ch;
        int u, v, w;
    
        while(scanf("%d %d%*c", &n, &m)!=EOF)
        {
            cnt=0;
            for(i=0; i<m; i++ )
            {
                ch=getchar();
                while(ch!='P' && ch!='V')
                {
                    ch=getchar();
                }
                if(ch=='P')
                {
                    scanf("%d %d %d", &u, &v, &w );
                    add(u, v, -1*w);
                    add(v, u, w);
                }
                else
                {
                    scanf("%d %d", &u, &v );
                    add(u, v, -1 );
                }
            }
            bellman_ford();
        }
        return 0;
    }
    
  • 相关阅读:
    使用Mockito进行单元测试【2】—— stub 和 高级特性[转]
    使用Mockito进行单元测试【1】——mock and verify[转]
    一个更加简洁的 建造者模式
    建造者模式
    另一种 模板模式
    模板模式
    适配器模式的另一种解释
    适配器模式
    迭代器模式
    迭代器模式 循环数组
  • 原文地址:https://www.cnblogs.com/yspworld/p/3930767.html
Copyright © 2011-2022 走看看