标签:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 13731 | Accepted: 5873 |
Description
Input
Output
Sample Input
5 5 10 0 1 1 1 1 2 2 1 3 3 1 4 4 2 1 5 2 2 6 2 3 7 2 4 8 3 3 9 4 3 0
Sample Output
3
Source
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<queue> 7 #include<cstdlib> 8 #include<iomanip> 9 using namespace std; 10 int read(){ 11 int x=0,f=1;char ch=getchar(); 12 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} 13 while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} 14 return x*f; 15 } 16 int n,m,k; 17 int nx,ny,ans=0; 18 bool map[101][101]; 19 bool ex[101],ey[101]; 20 int cx[101],cy[101]; 21 void change(); 22 int dfs(int); 23 int main() 24 { 25 std::ios::sync_with_stdio(false); 26 while(cin>>n) 27 { 28 if(n==0) break; 29 cin>>m>>k; 30 memset(map,false,sizeof(map)); 31 for(int i=0;i<k;i++) 32 { 33 int a,b,c; 34 cin>>a>>b>>c; 35 map[b][c]=true; 36 } 37 change(); 38 cout<<ans<<endl; 39 } 40 return 0; 41 } 42 void change() 43 { 44 ans=0; 45 int a,b,c; 46 memset(cx,0,sizeof(cx));memset(cy,0,sizeof(cy)); 47 for(int i=1;i<=n;i++) 48 { 49 if(!cx[i]) 50 { 51 memset(ex,false,sizeof(ex));memset(ey,false,sizeof(ey)); 52 ans+=dfs(i); 53 } 54 } 55 return; 56 } 57 int dfs(int u) 58 { 59 int a,b,c; 60 ex[u]=true; 61 int v; 62 for(v=1;v<=m;v++) 63 { 64 if((map[u][v]==true)&&(ey[v]==false)) 65 { 66 ey[v]=true; 67 if(!cy[v]||dfs(cy[v])) 68 { 69 cx[u]=v;cy[v]=u; 70 return 1; 71 } 72 } 73 } 74 return 0; 75 }
POJ 1325 Machine Schedule——S.B.S.
标签:
原文地址:http://www.cnblogs.com/AwesomeOrion/p/5491989.html