UVA1194

POJ1325

POJ要多判一个非零!!!

#include<cstdio> #include<vector> #include<cstring> using namespace std; vector<int>e[105]; int vis[105]; int link[105]; int t; int find(int x) { for(int i=0;i<e[x].size();i++) { int y=e[x][i]; if(vis[y]!=t) { vis[y]=t; if(link[y]==0||find(link[y])) { link[y]=x; return 1; } } } return 0; } int main() { int n,m,k; while(scanf("%d%d%d",&n,&m,&k)==3&&n!=0) { memset(link,0,sizeof(link)); memset(vis,0,sizeof(vis)); t=0; for(int i=1;i<=100;i++) e[i].clear(); int num,x,y; for(int i=1;i<=k;i++) { scanf("%d%d%d",&num,&x,&y); if(x&&y) e[x].push_back(y); } int ans=0; for(int i=1;i<=n;i++) { t++; if(find(i)) { ans++; } //else //break; } printf("%d\n",ans); } return 0; }