• Triangle LOVE(拓扑排序)


    Triangle LOVE

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other)
    Total Submission(s) : 49   Accepted Submission(s) : 30
    Problem Description
    Recently, scientists find that there is love between any of two people. For example, between A and B, if A don’t love B, then B must love A, vice versa. And there is no possibility that two people love each other, what a crazy world!
    Now, scientists want to know whether or not there is a “Triangle Love” among N people. “Triangle Love” means that among any three people (A,B and C) , A loves B, B loves C and C loves A.
      Your problem is writing a program to read the relationship among N people firstly, and return whether or not there is a “Triangle Love”.
     
    Input
    The first line contains a single integer t (1 <= t <= 15), the number of test cases. For each case, the first line contains one integer N (0 < N <= 2000). In the next N lines contain the adjacency matrix A of the relationship (without spaces). A[sub]i,j[/sub] = 1 means i-th people loves j-th people, otherwise A[sub]i,j[/sub] = 0. It is guaranteed that the given relationship is a tournament, that is, A[sub]i,i[/sub]= 0, A[sub]i,j[/sub] ≠ A[sub]j,i[/sub](1<=i, j<=n,i≠j).
     
    Output
    For each case, output the case number as shown and then print “Yes”, if there is a “Triangle Love” among these N people, otherwise print “No”. Take the sample output for more details.
     
    Sample Input
    2 5 00100 10000 01001 11101 11000 5 01111 00000 01000 01100 01110
     
    Sample Output
    Case #1: Yes Case #2: No
    代码:
     
     
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<queue>
     4 using namespace std;
     5 const int MAXN=2010;
     6 int map[MAXN][MAXN];
     7 int que[MAXN],flot,N,tot=0;
     8 char c[MAXN][MAXN];
     9 queue<int>dl;
    10 void topsort(){
    11     for(int i=1;i<=N;i++)
    12         if(!que[i])dl.push(i);
    13         //printf("%d",dl.size());
    14         //puts("asfaf");
    15     while(!dl.empty()){
    16         int k=dl.front();
    17         flot++;
    18         dl.pop();
    19         que[k]=-1;
    20        // printf("%d",dl.size());
    21         for(int j=1;j<=N;j++){
    22             if(map[k][j])que[j]--;
    23             if(!que[j])dl.push(j);
    24         }
    25     }
    26    // puts("asfaf");
    27     if(flot==N)printf("Case #%d: No
    ",tot);
    28     else printf("Case #%d: Yes
    ",tot);
    29 }
    30 void initial(){
    31     memset(que,0,sizeof(que));
    32     while(!dl.empty()){
    33         dl.pop();
    34     }
    35     flot=0;
    36 }
    37 int main(){
    38     int T;
    39     scanf("%d",&T);
    40     while(T--){
    41             tot++;
    42             initial();
    43         scanf("%d",&N);
    44         //puts("asfaf");
    45         //printf("%d
    ",N);
    46         for(int i=0;i<N;i++)scanf("%s",c[i]);
    47         for(int i=1;i<=N;i++){
    48             for(int j=1;j<=N;j++){
    49             map[i][j]=c[i-1][j-1]-'0';
    50                 if(map[i][j])que[j]++;
    51             }
    52         }
    53        // puts("asfaf");
    54        /* for(int i=1;i<=N;i++){
    55             for(int j=1;j<=N;j++){
    56             printf("%d",map[i][j]);
    57             }
    58                 puts("");
    59         }*/
    60         //puts("asfaf");
    61         topsort();
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    exploded archive 和packaged archive 区别
    MyEclipse6.5使用设置技巧及快捷键
    本机上设置域名解析
    Cookie的生命周期问题
    简单的函数柯里化
    cookie操作
    自定义事件
    解耦应用逻辑/事件处理程序
    dragdrop + 自定义事件
    在窃取函数中用作用域安全的构造函数
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4732543.html
Copyright © 2020-2023  润新知