标签:
过山车 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
Sample Output
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 5 using namespace std; 6 7 #define N 1010 8 9 int n, m, used[N], cnt[N], vis[N]; 10 int maps[N][N]; 11 12 void init() 13 { 14 memset(used, 0, sizeof(used)); 15 memset(cnt, 0, sizeof(cnt)); 16 memset(maps, 0, sizeof(maps)); 17 memset(vis, 0, sizeof(vis)); 18 } 19 20 int found(int u) 21 { 22 for(int i = 1; i <= n; i++) 23 { 24 if(maps[u][i] && !vis[i]) 25 { 26 vis[i] = 1; // 已经被访问过的不会被访问, 27 28 if( !used[i] || found(used[i])) 29 { 30 used[i] = u; 31 return true; 32 } 33 } 34 } 35 return false; 36 } 37 38 int main() 39 { 40 int k, a, b; 41 42 while(scanf("%d", &k), k) 43 { 44 init(); 45 46 int ans = 0; 47 48 scanf("%d%d", &m, &n); 49 50 while(k--) 51 { 52 scanf("%d%d", &a, &b); 53 maps[a][b] = 1; 54 //used[b] = a; 55 } 56 57 for(int i = 1; i <= m; i++) 58 { 59 memset(vis, 0, sizeof(vis)); //每次询问之前都要清0,在一次询问中,每个都是未被访问过的。 60 if(found(i)) 61 ans++; 62 } 63 printf("%d\n", ans); 64 } 65 return 0; 66 }
标签:
原文地址:http://www.cnblogs.com/Tinamei/p/4718739.html