Cod sursa(job #2273622)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 31 octombrie 2018 20:04:46
Problema Felinare Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("felinare.in");
ofstream g("felinare.out");

vector<int> v[9010];
int n,m,i,x,y,ans,D[9010],S[9010];
bitset<9010> viz;

bool grow(int i)
{
    if(viz[i])return 0;
    viz[i]=1;
    for(auto it:v[i])
        if(!S[it])
        {
            D[i]=it;
            S[it]=i;
            return 1;
        }
    for(auto it:v[i])
        if(!viz[S[it]]&&grow(S[it]))
        {
            D[i]=it;
            S[it]=i;
            return 1;
        }
    return 0;
}

int main()
{
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        v[x].push_back(y);
    }
    for(bool ok=1;ok;)
    {
        ok=0;viz.reset();
        for(i=1;i<=n;i++)
            if(!D[i]&&grow(i))
            {
                ok=1;
                ans++;
            }
    }
    g<<ans+n<<'\n';
    for(i=1;i<=n;i++)
        g<<0<<'\n';
    return 0;
}