标签:lan ram art sig -- result with star ref
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 23535 | Accepted: 9221 |
Description
Input
Output
Sample Input
2
3 3
3 1 2 3
2 1 2
1 1
3 3
2 1 3
2 1 3
1 1
Sample Output
YES
NO
Source
1 #include <iostream> 2 #include <cmath> 3 #include <cstring> 4 #include <cstdio> 5 #include <cstdlib> 6 #include <algorithm> 7 8 using namespace std; 9 int p,n; 10 int map[305][305]; //记录边 11 int linker[305]; //记录匹配边 12 bool vis[305]; //记录是否访问过 13 bool dfs(int x) 14 { 15 for(int i=1;i<=n;i++) 16 if(map[x][i] && !vis[i]) 17 { 18 vis[i]=true; 19 if(linker[i]==-1 || dfs(linker[i])) 20 { 21 linker[i]=x; 22 return true; 23 } 24 } 25 return false; 26 } 27 int hungary() 28 { 29 int result=0; 30 memset(linker,-1,sizeof(linker)); 31 for(int i=1;i<=n;i++) 32 { 33 memset(vis,0,sizeof(vis)); 34 if(dfs(i)) result++; 35 } 36 return result; 37 } 38 39 int main() 40 { 41 int num; 42 scanf("%d",&num); 43 while(num--) 44 { 45 memset(map,0,sizeof(map)); 46 scanf("%d%d",&p,&n); 47 for(int i=1;i<=p;i++) 48 { 49 int u; 50 scanf("%d",&u); 51 for(int j=1;j<=u;j++) 52 { 53 int v; 54 scanf("%d",&v); 55 map[i][v]=1; 56 } 57 } 58 int ans=hungary(); 59 if(ans==p) printf("YES\n"); 60 else printf("NO\n"); 61 } 62 //system("pause"); 63 return 0; 64 }
标签:lan ram art sig -- result with star ref
原文地址:http://www.cnblogs.com/YXY-1211/p/7181918.html