Pagini recente » Cod sursa (job #1300176) | Cod sursa (job #2212041) | Cod sursa (job #2148693) | Cod sursa (job #1746116) | Cod sursa (job #534368)
Cod sursa(job #534368)
#include <fstream>
using namespace std;
ifstream fin("java.in");
ofstream fout("java.out");
#include <vector>
#define maxn 10005
int i,N,M,E,T,Cmax;
vector <short> A[maxn];
int S[maxn],D[maxn],v[maxn];
int pairup(int x)
{
vector <short> :: iterator it;
if(v[x]) return 0;
v[x]=1;
for(it=A[x].begin();it!=A[x].end();it++)
if( S[*it]==0 || pairup(S[*it]) )
{
D[x]=*it; S[*it]=x; return 1;
}
return 0;
}
int main()
{
int ok; short x,y;
for(fin >> T;T;T--)
{
fin >> M >> N >> E;
for(;E;E--)
{
fin >> x >> y;
A[x].push_back(y);
}
ok=1; Cmax=0;
for(i=1;i<=M;i++) D[i]=S[i]=0;
while(ok)
{
ok=0;
for(i=1;i<=M;i++) v[i]=0;
for(i=1;i<=M;i++)
if(D[i]==0)
if( pairup(i) )
{
Cmax++;
ok=1;
}
}
fout << Cmax << '\n';
for(i=1;i<=M;i++)
for(;!A[i].empty();A[i].pop_back());
}
}