标签:name namespace his adt comm time body track spi
Time Limit: 10000MS | Memory Limit: 65536K | |
Total Submissions: 28703 | Accepted: 9350 |
Description
Input
Output
Sample Input
2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
Sample Output
Scenario #1: Suspicious bugs found! Scenario #2: No suspicious bugs found!
Hint
Source
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int c[2100] , d[2100] ; int find1(int a) { if( c[a] != a ) { c[a] = find1(c[a]) ; d[a] = d[ c[a] ] ; } return c[a] ; } int main() { int t , tt , i , j , n , m , a , b , flag ; scanf("%d", &t); for(tt = 1 ; tt <= t ; tt++) { scanf("%d %d", &n, &m); for(i = 1 ; i <= n ; i++) c[i] = i ; memset(d,-1,sizeof(d)); flag = 0 ; while(m--) { scanf("%d %d", &a, &b); if( flag ) continue ; int x , y ; x = find1(a) ; y = find1(b) ; if(x == y) flag = 1 ; else if( d[x] == -1 && d[y] == -1 ) { d[x] = y ; d[y] = x ; } else if( d[x] != -1 ) { c[y] = d[x] ; if( d[y] != -1 ) { int xx = find1(d[y]); c[xx] = x ; d[xx] = y ; } d[y] = x ; } else { c[x] = d[y] ; if( d[x] != -1 ) { int yy = find1(d[x]); c[yy] = y ; d[yy] = x ; } d[x] = y ; } } printf("Scenario #%d:\n", tt); if( flag ) printf("Suspicious bugs found!\n\n"); else printf("No suspicious bugs found!\n\n"); } return 0; }
poj2492--A Bug's Life(并查集变形)
标签:name namespace his adt comm time body track spi
原文地址:http://www.cnblogs.com/mthoutai/p/6955163.html