Cod sursa(job #2379155)

Utilizator shantih1Alex S Hill shantih1 Data 12 martie 2019 22:33:02
Problema Felinare Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#define nmx 8200

using namespace std;
ifstream fin("felinare.in");
ofstream fout("felinare.out");

int n,m,i,j,k,nr;
int l[nmx],r[nmx],u[nmx];
vector<int> ad[nmx];

int augment(int n)
{
	if(u[n])	return 0;
	u[n]=1;
	for(int i:ad[n])
		if(!r[i])
		{
			l[n]=i;
			r[i]=n;
			return 1;
		}
	for(int i:ad[n])
		if(augment(r[i]))
		{
			l[n]=i;
			r[i]=n;
			return 1;
		}
	return 0;
}

int main() {
	
	fin>>n>>m;
	for(i=1;i<=m;i++)
	{
		fin>>j>>k;
		ad[j].push_back(k);
	}
	
	for(int ok=1; ok;)
	{
		ok=0;
		memset(u, 0, sizeof(u));
		for(i=1;i<=n;i++)
			if(!l[i])
				ok|=augment(i);
	}
	
	for(i=1;i<=n;i++)
		if(l[i]!=0)	nr++;
	fout<<2*n-nr<<"\n";
}