Cod sursa(job #1494493)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 1 octombrie 2015 11:14:02
Problema Strazi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <vector>

using namespace std;

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

int

int cuplaj(int nod)
{
    v[nod] = 1;

    for(int i = 0; i < L[nod].size(); i ++)
    {
        int a = L[nod][i];
        if(stanga[a] == 0)
        {
            stanga[a] = nod;
            dreapta[nod] = a;
            return 1;
        }
    }
    for(int i = 0; i < L[nod].size(); i ++)
    {
        int a = L[nod][i];
        if(cuplaj(dreapt[a]) && v[a] == 0 )
        {
            dreapta[a] = nod;
            stanga[nod] = a;
            return 1;
        }
    }
    return 0;
}

int main()
{
    fin >> n >> m;

    for(int i = 1; i <= m; i ++)
    {
        fin >> a >> b;
        L[a].push_back(b);
        X[a][b] = 1;
    }

    while(1)
    {
        ok = 0;
        for(int i = 1; i <= n; i ++)
        {
            v[i] = 0;
        }
        for(int i = 1; i <= n; i ++)
        {
            if( cuplaj(i) == 1 && stanga[i] == 0 )
            {
                nr ++;
                ok = 1;
            }
        }

        if(ok == 0)
            break;
    }

    return 0;
}