Cod sursa(job #2920064)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 21 august 2022 19:42:55
Problema Cuplaj maxim in graf bipartit Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");

const int dim=1e4+9;

vector<int>v[dim];

int n,m,e;
bool used[dim];
int current_maching[dim];

bool try_khun(int x){
    if(used[x]){
        return false;
    }
    used[x]=true;
    for(int y:v[x]){
        if(!current_maching[y]||try_khun(current_maching[y])){
            current_maching[y]=x;
            return true;
        }
    }
    return false;
}

signed main(){
        fin>>n>>m>>e;
    for(int i=1;i<=e;i++){
        int x,y;
        fin>>x>>y;
        v[x].push_back(y);
    }
    for(int i=1;i<=n;i++){
        for(int i=1;i<=n;i++){
            used[i]=false;
        }
        try_khun(i);
    }
    int nr=0;
    for(int i=1;i<=m;i++){
        if(current_maching[i]){
            nr++;
        }
    }
        fout<<nr<<'\n';
    for(int i=1;i<=m;i++){
        if(current_maching[i]){
            fout<<current_maching[i]<<' '<<i<<'\n';
        }
    }
}