zoukankan      html  css  js  c++  java
  • hdu 4324 Triangle LOVE

    Triangle LOVE

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


    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 details.
     
    
    
    Sample Input
    2
    5
    00100
    10000
    01001
    11101
    11000
    5
    01111
    00000
    01000
    01100
    01110
     
    
    
    Sample Output
    Case #1: Yes
    Case #2: No
     
    
    
    Author
    Zhaozhouyang
     
    
    
    Source
     
    
    
    Recommend
    zhoujiaqi2010

    //这题做的好奇怪、开始用vector进行邻接存储以某点出发可以到的点
    //结果超时,而用for循环(i=1;i<=n;i++)居然187Ms
    //网上说官方解题报告用“增量法",表示不知道、唉、见识太少
    //这方法是最早想到的、结果一直被自己排除,东搞西搞最后还是回来用dfs
    //就是用不恢复标记、判断某2点距离是否相差2且有线相连
    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> #include <vector> using namespace std; char b[2001][2001]; bool f[2001],flag; int dis[2001],n; void dfs(int df) { if(flag) return; f[df]=1; int i; for(i=1;i<=n;i++) if(b[df][i]=='1') { if(f[i]&&dis[df]==dis[i]+2)//判断是否成3角恋关系 { flag=1; break; } else if(!f[i]) { dis[i]=dis[df]+1; dfs(i); } } } int main() { int t,cnt=1; int i; scanf("%d",&t); while(t--) { scanf("%d",&n); getchar(); for(i=1;i<=n;i++) { f[i]=0; scanf("%s",b[i]+1); } flag=0;dis[1]=0; dfs(1); printf("Case #%d: ",cnt++); if(flag) printf("Yes\n"); else printf("No\n"); } return 0; }
  • 相关阅读:
    程序员这生必须掌握的两种图形
    用一张组织架构图说清楚类和对象
    简单工厂、工厂方法、抽象工厂的比较与分析
    rabbitmq系列(一)初识rabbitmq
    【最新】经典面试100问,附答案
    使用wordPress搭建个人博客
    调试接口你还在用postman吗
    Token ,Cookie、Session傻傻分不清楚?
    你不可不知的自定义注解
    使用aop加解密http接口
  • 原文地址:https://www.cnblogs.com/372465774y/p/2621868.html
Copyright © 2011-2022 走看看