Pagini recente » Cod sursa (job #2334809) | Cod sursa (job #1009659) | Cod sursa (job #2714386) | Cod sursa (job #3224991) | Cod sursa (job #1444296)
#include <cstdio>
#include <vector>
#define nmax 10100
using namespace std;
FILE *f,*g;
int bf[nmax],L[nmax],R[nmax];
vector <int> a[nmax];
int T,n,m,e;
int Try(int x)
{
if (bf[x] == 1) return 0;
bf[x] = 1;
for (int i=0;i<a[x].size();i++)
if (R[a[x][i]] == 0)
{
R[a[x][i]] = x;
L[x] = a[x][i];
return 1;
}
for (int i=0;i<a[x].size();i++)
if (Try(R[a[x][i]]))
{
R[a[x][i]] = x;
L[x] = a[x][i];
return 1;
}
return 0;
}
int main()
{
f=fopen("cuplaj.in","r");
g=fopen("cuplaj.out","w");
// fscanf(f,"%d",&T);
int i,ok;
for (;T=1;T--)
{
fscanf(f,"%d%d%d",&n,&m,&e);
for (i=1;i<=n;i++)
{
L[i] = R[i] = 0;
a[i].clear();
}
for (i=1;i<=e;i++)
{
int x,y;
fscanf(f,"%d%d",&x,&y);
a[x].push_back(y);
}
ok = 1;
while (ok)
{
ok = 0;
for (i=1;i<=n;i++)
bf[i] = 0;
for (i=1;i<=n;i++)
if (L[i] == 0)
ok |= Try(i);
}
int ans = 0;
for (i=1;i<=n;i++)
ans += (L[i]!=0);
fprintf(g,"%d\n",ans);
}
return 0;
}