标签:fast inline mars 注意 img dev visit continue click
Time Limit: 6000MS | Memory Limit: 65536K | |
Total Submissions: 8879 | Accepted: 3635 |
Description
Input
Output
Sample Input
1 0 2 1 1 2 2 0 0 0
Sample Output
1 1 2
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 6 inline void read(int &x) 7 { 8 x = 0;char ch = getchar(), c = ch; 9 while(ch < ‘0‘ || ch > ‘9‘)c = ch, ch = getchar(); 10 while(ch <= ‘9‘ && ch >= ‘0‘)x = x * 10 + ch - ‘0‘, ch = getchar(); 11 if(c == ‘-‘)x = -x; 12 } 13 14 const int INF = 0x3f3f3f3f; 15 16 struct Edge 17 { 18 int u,v,next; 19 Edge(int _u, int _v, int _next){u = _u, v = _v, next = _next;} 20 Edge(){} 21 }edge[250010]; 22 23 int head[510], cnt; 24 25 inline void insert(int a, int b) 26 { 27 edge[++cnt] = Edge(a,b,head[a]); 28 head[a] = cnt; 29 } 30 31 int n,m,lk[510],b[510],g[510][610]; 32 33 int dfs(int u) 34 { 35 for(register int pos = head[u];pos;pos = edge[pos].next) 36 { 37 int v = edge[pos].v; 38 if(b[v])continue; 39 b[v] = 1; 40 if(lk[v] == -1 || dfs(lk[v])) 41 { 42 lk[v] = u; 43 return 1; 44 } 45 } 46 return 0; 47 } 48 49 int xiongyali() 50 { 51 int ans = 0; 52 memset(lk, -1, sizeof(lk)); 53 for(register int i = 1;i <= n;++ i) 54 { 55 memset(b, 0, sizeof(b)); 56 ans += dfs(i); 57 } 58 return ans; 59 } 60 61 int main() 62 { 63 while(scanf("%d %d", &n, &m) != EOF && (n + m)) 64 { 65 memset(edge, 0, sizeof(edge)); 66 memset(head, 0, sizeof(head)); 67 memset(g, 0, sizeof(g)); 68 cnt = 0; 69 int tmp1, tmp2; 70 for(register int i = 1;i <= m;++ i) 71 { 72 read(tmp1), read(tmp2); 73 g[tmp1][tmp2] = 1; 74 } 75 for(register int k = 1;k <= n;++ k) 76 for(int i = 1;i <= n;++ i) 77 for(int j = 1;j <= n;++j) 78 g[i][j] |= g[i][k] && g[k][j]; 79 for(register int i = 1;i <= n;++ i) 80 for(int j = 1;j <= n;++ j) 81 if(g[i][j]) insert(i, j); 82 printf("%d\n", n - xiongyali()); 83 } 84 return 0; 85 }
标签:fast inline mars 注意 img dev visit continue click
原文地址:http://www.cnblogs.com/huibixiaoxing/p/7585701.html