zoukankan      html  css  js  c++  java
  • 1487. Chinese Football 夜

    http://acm.timus.ru/problem.aspx?space=1&num=1487

    A可以打赢了B并不代表A打得比B好  stronger!=better

    注意这句话:Denis claims that the “Katraps” team plays better than the “Kolomotiv” team,
    namely, that “Katraps” is not weaker than any team which is stronger than
    “Komolotiv”.

    所以 如果A和B有共同祖先 No 否则 YES

    自己写的程序时间复杂度很高 水过

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<map>
    #include<vector>
    #include<stack>
    #include<set>
    #include<map>
    #include<queue>
    #include<deque>
    #include<algorithm>
    #include<cmath>
    #define LL long long
    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    using namespace std;
    const double eps=1e-9;
    const int INF=0x3f3f3f3f;
    const double FINF=1e12;
    const int N=1005;
    int head[N],I;
    struct node
    {
        int j,next;
    }edge[N*N];
    char c[N][N];
    //bool root[N];
    bool visited[N];
    //vector<int>vt;
    void add(int i,int j)
    {
        edge[I].j=j;
        edge[I].next=head[i];
        head[i]=I++;
    }
    void dfs(int x,int l)
    {
        visited[x]=true;
        for(int t=head[x];t!=-1;t=edge[t].next)
        {
            int j=edge[t].j;
            if(!visited[j])
            {c[l][j]='1';dfs(j,l);}
        }
    }
    int main()
    {
        //freopen("data.in","r",stdin);
        memset(head,-1,sizeof(head));
        I=0;
        int n;
        cin>>n;
        for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
        {
            cin>>c[i][j];
            if(c[i][j]=='1')
            add(i,j);
        }
        for(int i=1;i<=n;++i)
        {
            memset(visited,false,sizeof(visited));
            dfs(i,i);
        }
        int q;
        cin>>q;
        while(q--)
        {
            int l,r;
            cin>>l>>r;
            bool flag=true;
            for(int i=1;i<=n;++i)
            if(c[i][l]=='1'&&c[i][r]=='1')
            {flag=false;break;}
            if(flag==true)
            cout<<"YES"<<endl;
            else
            cout<<"No"<<endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    BZOJ5311,CF321E 贞鱼
    POJ3208 Apocalypse Someday
    POJ1037 A decorative fence
    POJ1737 Connected Graph
    CF559C Gerald and Giant Chess
    NOI2009 诗人小G
    Problem 2726. -- [SDOI2012]任务安排
    POJ1821 Fence
    HDU5542 The Battle of Chibi
    POJ2376 Cleaning Shifts
  • 原文地址:https://www.cnblogs.com/liulangye/p/2931658.html
Copyright © 2011-2022 走看看