Cod sursa(job #3315407)

Utilizator popescu_georgePopescu George popescu_george Data 14 octombrie 2025 09:03:21
Problema Cuplaj maxim in graf bipartit Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
#include<vector>
#include<bitset>
using namespace std;
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
const int N=10001;
vector<int> g[N];
int l[N],r[N];
bitset<N> u,v;
int P(int n)
{
    if(u[n])
		return 0;
    u[n]=1;
    for(int i:g[n])
		if(!r[i])
        	return l[n]=i,r[i]=n,1;
    for(int i:g[n])
		if(P(r[i]))
        	return l[n]=i,r[i]=n,1;
    return 0;
}
int main()
{
    int e,j=0,m,n;
    for(cin>>n>>m>>e;e--;) {
        int i,j;
        cin>>i>>j,g[i].push_back(j);
    }
    for(int c=1;c;) {
        c=0,u=v;
        for(int i=1;i<=n;++i)
            if(!l[i])
                c|=P(i);
    }
    for(int i=1;i<=n;j+=l[i++]>0);
    cout<<j<<'\n';
    for(int i=1;i<=n;++i)
		if(l[i])
            cout<<i<<' '<<l[i]<<'\n';
    return 0;
}