标签:hdu contain mode logs cannot mod amp ssi single
http://acm.hdu.edu.cn/showproblem.php?pid=1054
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8510 Accepted Submission(s): 4096
1 #include <cstring> 2 #include <cstdio> 3 4 const int N(2555); 5 int n,sumedge,head[N]; 6 struct Edge 7 { 8 int v,next; 9 Edge(int v=0,int next=0):v(v),next(next){} 10 }edge[233333]; 11 inline void ins(int u,int v) 12 { 13 edge[++sumedge]=Edge(v,head[u]); 14 head[u]=sumedge; 15 edge[++sumedge]=Edge(u,head[v]); 16 head[v]=sumedge; 17 } 18 19 int match[N]; 20 bool vis[N]; 21 bool find(int u) 22 { 23 for(int v,i=head[u];i;i=edge[i].next) 24 if(!vis[v=edge[i].v]) 25 { 26 vis[v]=1; 27 if(!match[v]||find(match[v])) 28 { 29 match[v]=u; 30 return true; 31 } 32 } 33 return false; 34 } 35 36 inline void read(int &x) 37 { 38 x=0; register char ch=getchar(); 39 for(;ch>‘9‘||ch<‘0‘;) ch=getchar(); 40 for(;ch>=‘0‘&&ch<=‘9‘;ch=getchar()) x=x*10+ch-‘0‘; 41 } 42 43 int main() 44 { 45 for(;~scanf("%d",&n);) 46 { 47 int ans=0;sumedge=0; 48 for(int u,k,i=0;i<n;i++) 49 { 50 read(u),read(k); 51 for(int v;k--;) 52 read(v),ins(u+1,v+1); 53 } 54 for(int i=1;i<=n;i++) 55 { 56 if(find(i)) ans++; 57 memset(vis,0,sizeof(vis)); 58 } 59 memset(edge,0,sizeof(edge)); 60 memset(head,0,sizeof(head)); 61 memset(match,0,sizeof(match)); 62 printf("%d\n",ans>>1); 63 } 64 return 0; 65 }
标签:hdu contain mode logs cannot mod amp ssi single
原文地址:http://www.cnblogs.com/Shy-key/p/7435716.html