zoukankan      html  css  js  c++  java
  • (差分约束系统) poj 2983

    Is the Information Reliable?
    Time Limit: 3000MS   Memory Limit: 131072K
    Total Submissions: 11676   Accepted: 3687

    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

     
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<cstdlib>
    #include<algorithm>
    #include<queue>
    #define INF 100000000
    using namespace std;
    int n,m,cnt,in[1010],dist[1010];
    bool vis[1010];
    char c;
    struct node
    {
        int to,len,next;
    }e[210000];
    int head[1010];
    void add(int u,int v,int len)
    {
        e[++cnt].to=v;
        e[cnt].len=len;
        e[cnt].next=head[u];
        head[u]=cnt;
    }
    bool spfa(int u)
    {
        memset(in,0,sizeof(in));
        memset(vis,0,sizeof(vis));
        for(int i=0;i<=n;i++)
            dist[i]=INF;
        vis[u]=1;
        dist[u]=0;
        queue<int> q;
        q.push(u);
        in[u]++;
        while(!q.empty())
        {
            int x=q.front();
            q.pop();
            vis[x]=0;
            for(int i=head[x];i;i=e[i].next)
            {
                int v=e[i].to;
                int w=e[i].len;
                if(dist[v]>dist[x]+w)
                {
                    dist[v]=dist[x]+w;
                    if(!vis[v])
                    {
                        q.push(v);
                        vis[v]=1;
                        in[v]++;
                        if(in[v]>n+1)
                            return false;
                    }
                }
            }
        }
        return true;
    }
    int main()
    {
        int a,b,w;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            cnt=1;
            memset(head,0,sizeof(head));
            for(int i=1;i<=m;i++)
            {
                cin>>c;
                if(c=='P')
                {
                    scanf("%d%d%d",&a,&b,&w);
                    add(b,a,-w);
                    add(a,b,w);
                }
                else if(c=='V')
                {
                    scanf("%d%d",&a,&b);
                    add(b,a,-1);
                }
            }
            for(int i=1;i<=n;i++)
                add(0,i,0);
            if(spfa(0))
                printf("Reliable
    ");
            else
                printf("Unreliable
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    Windows10+CLion+OpenCV4.5.2开发环境搭建
    Android解决部分机型WebView播放视频全屏按钮灰色无法点击、点击全屏白屏无法播放等问题
    MediaCodec.configure Picture Width(1080) or Height(2163) invalid, should N*2
    tesseract
    Caer -- a friendly API wrapper for OpenCV
    Integrating OpenCV python tool into one SKlearn MNIST example for supporting prediction
    Integrating Hub with one sklearn mnist example
    What is WSGI (Web Server Gateway Interface)?
    Hub --- 机器学习燃料(数据)的仓库
  • 原文地址:https://www.cnblogs.com/water-full/p/4531224.html
Copyright © 2011-2022 走看看