Pagini recente » Cod sursa (job #3170848) | Cod sursa (job #1381728) | Cod sursa (job #1221646) | Statistici Ancuta Ioan (IoanOfni) | Cod sursa (job #2798839)
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
const int N=1e4+2;
int n,m,k,x,y,ans,i;
int st[N],dr[N];
bool vis[N],ok;
vector<int> asc[N];
bool dfs(int now)
{
if(vis[now])
return false;
vis[now]=true;
for(auto& i:asc[now])
if(!st[i])
{
st[i]=now;
dr[now]=i;
return true;
}
for(auto& i:asc[now])
if(dfs(st[i]))
{
st[i]=now;
dr[now]=i;
return true;
}
return false;
}
int main()
{
fin>>n>>m>>k;
for(i=1; i<=k; i++)
fin>>x>>y, asc[x].pb(y);
ok=true;
while(ok)
{
ok=false;
for(i=1; i<=n; i++)
vis[i]=false;
for(i=1; i<=n; i++)
if(!dr[i] && dfs(i))
ok=true, ans++;
}
fout<<ans<<'\n';
for(i=1; i<=n; i++)
if(dr[i])
fout<<i<<' '<<dr[i]<<'\n';
return 0;
}