• [题解] hdu 4324 Triangle LOVE (拓扑排序)


    - 传送门 -

     http://acm.hdu.edu.cn/showproblem.php?pid=4324
     

    # Triangle LOVE

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 4977    Accepted Submission(s): 1960

    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). Ai,j = 1 means i-th people loves j-th people, otherwise Ai,j = 0.
    It is guaranteed that the given relationship is a tournament, that is, Ai,i= 0, Ai,j ≠ Aj,i(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

    Sample Input

    2
    5
    00100
    10000
    01001
    11101
    11000
    5
    01111
    00000
    01000
    01100
    01110

    Sample Output

    Case #1: Yes
    Case #2: No

    Source

    2012 Multi-University Training Contest 3

    - 题意 -

     n 个人, 每两个人间一定有 单向 喜欢的关系, 问有没有三角恋.
     ((A o B, B o C, C o A))
     

    - 思路 -

     拓扑排序模板.
     重点在于分析得到, 只要成环就一定有三角恋.(结合两人间一定有单向喜欢的关系来看)
     假设有((a o b o c... o y o z o a)) 这样一个环, 首先看 (a)(c), 如果 (c)(a) 连边则成环, 所以一定是 (a)(c) 连边, 同理推 (d) (e)...到 (y) 的时候, (a)(y) 连边, 则(a,y,z) 成环, (y)(a) 连边, 则(a,x,y) 成环.
     
     细节见代码.
     

    - 代码 -

    #include<cstdio>
    #include<cstring>
    #include<vector>
    #include<queue>
    using namespace std;
    
    const int N = 2e3 + 5;
    
    int IN[N];
    int mat[N][N];
    char map[N][N];
    int n, cas, ans, x;
    vector<int>Q[N];
    queue<int>q;
    
    void topo() {
    	for(int j=1;j<=n;j++)
        {
          int k;
          for(k=1;k<=n;k++)
          if(IN[k]==0)break;
          if(k==n+1)
          {
            ans = n;
            break;
          }else{
            IN[k]--;
            for(int p=1;p<=n;p++) {
                if(map[k][p-1]=='1' &&IN[p]!=0)
                IN[p]--;
            }
          }
        }
    }
    
    int main() {
    	scanf("%d", &cas);
    	for (int c = 1; c <= cas; ++ c) {
    		scanf("%d", &n);	
    		memset(IN, 0, sizeof (IN));
    		ans = 0;
    		for (int i = 1; i <= n; ++i) {
    			scanf("%s", map[i]);
    			for (int j = 0; j < n; ++j)
    				if (map[i][j] == '1')
    					IN[j+1] ++;
    		}
    		topo();
    		if (ans == 0) printf("Case #%d: No
    ", c);
    		else printf("Case #%d: Yes
    ", c);
    	}
    	return 0;
    }
    
  • 相关阅读:
    CentOS7使用firewalld打开关闭防火墙与端口
    ssh连接卡在【To escape to local shell, press 'Ctrl+Alt+]'.】的解决方法
    本地链路地址
    RIFF和WAVE音频文件格式
    声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
    VS中C++ 项目重命名
    FFmpeg学习6:视音频同步
    FFmpeg学习5:多线程播放视音频
    FFmpeg学习4:音频格式转换
    FFmpeg数据结构:AVPacket解析
  • 原文地址:https://www.cnblogs.com/Anding-16/p/7401182.html
Copyright © 2020-2023  润新知