Pagini recente » Cod sursa (job #2089939) | Cod sursa (job #693223) | Cod sursa (job #162802) | Cod sursa (job #1392215) | Cod sursa (job #240791)
Cod sursa(job #240791)
#include <stdio.h>
#include <stdlib.h>
#include <bitset>
using namespace std;
long A,B,n,m,i,j,g[20000],x[100000],y[100000];
long sursa,dest,l,ok,flux,d[20000];
int *v[20000];
bitset <20001>mark;
bitset <20000>c[20000];
/*
void dfs(int k){
mark[k]=1;
for (int i=0;i<g[k]&&ok;++i)
if (c[k][i]){
if (v[k][i]==dest){ok=0;break;}
if (!mark[v[k][i]])
dfs(v[k][i]);
}
if (!ok)d[++l]=k;
}
*/
int main(){
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
scanf("%ld %ld %ld",&A,&B,&m);
for (i=1;i<=m;++i){
scanf("%ld %ld",&x[i],&y[i]);
g[x[i]]++;g[y[i]+A]++;
}
n=A+B;
for (i=1;i<=n;++i){
v[i]=(int*)malloc(g[i]*sizeof(int)+1);
//c[i]=(int*)malloc(g[i]*sizeof(int)+1);
g[i]=0;
}
for (i=1;i<=m;++i){
v[x[i]][g[x[i]]]=y[i]+A;
//c[x[i]][g[x[i]]++]=1;
v[y[i]+A][g[y[i]+A]++]=x[i];
}
//construire sursa si destinatie
sursa=0; dest=n+1;
v[0]=(int*)malloc(A*sizeof(int));
//c[0]=(int*)malloc(A*sizeof(int));
v[dest]=(int*)malloc(B*sizeof(int));
//c[dest]=(int*)malloc(B*sizeof(int));
for (i=1;i<=A;++i){
v[0][g[0]]=i;
v[i][g[i]++]=0;
//c[0][g[0]++]=1;
}
for (i=A+1;i<=n;++i){
v[i][g[i]]=dest;
v[dest][g[dest]++]=i;
//c[i][g[i]++]=1;
}
////
do{
mark.reset();d[1]=dest;l=1;ok=1;
// dfs(0);if (ok)break;
for (i=1;i<l;++i){
// c[d[i+1]][d[i]]--;
// c[d[i]][d[i+1]]++;
}
flux++;
}while(0);
printf("%ld\n",flux);
return 0;
}