hdu 5154 Harry and Magical Computer

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154

题意分析:有向图问题,要求判断是否存在环。 发现并查集竟然也能处理有向图问题~~

/*Harry and Magical Computer



Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1028    Accepted Submission(s): 415





Problem Description

In reward of being yearly outstanding magic student, Harry gets a magical computer. When the computer begins to deal with a process, it will work until the ending of the processes. One day the computer got n processes to deal with. We number the processes from 1 to n. However there are some dependencies between some processes. When there exists a dependencies (a, b), it means process b must be finished before process a. By knowing all the m dependencies, Harry wants to know if the computer can finish all the n processes.

 



Input

There are several test cases, you should process to the end of file.

For each test case, there are two numbers n m on the first line, indicates the number processes and the number of dependencies. 1≤n≤100,1≤m≤10000

The next following m lines, each line contains two numbers a b, indicates a dependencies (a, b). 1≤a,b≤n

 



Output

Output one line for each test case. 

If the computer can finish all the process print "YES" (Without quotes).

Else print "NO" (Without quotes).

 



Sample Input

3 2

3 1

2 1

3 3

3 2

2 1

1 3

 



Sample Output

YES

NO

 



Source

BestCoder Round #25

 

*/

#include <cstdio>

#include <cstring>

const int maxn = 1000 + 10;

int n, m, p[maxn];

int find(int x, int y)

{

    if(p[y] == x) return 1;

    if(p[y] == y) return 0;

    find(x, p[y]);

}



int main()

{

    int a, b;

    while(~scanf("%d%d", &n, &m)){

        int flag = 0;

        for(int i = 1; i <= n; i++) p[i] = i;

        for(int i = 0; i < m; i++){

            scanf("%d%d", &a, &b);

            if(find(a, b)) flag = 1;

            else p[a] = b;

        } 

        if(!flag) printf("YES\n");

        else printf("NO\n"); 

    }

    return 0;

}

 

你可能感兴趣的:(com)