Pagini recente » Cod sursa (job #226195) | Cod sursa (job #2467116) | Cod sursa (job #2444420) | Cod sursa (job #484371) | Cod sursa (job #56506)
Cod sursa(job #56506)
using namespace std;
#include <cstdio>
#include <vector>
#include <string>
#define maxn 9000
vector<vector<int> > a;
bool viz[maxn];
int l[maxn], r[maxn];
int n, m;
void citire()
{
int p, q;
freopen("felinare.in", "r", stdin);
scanf("%d %d\n", &n, &m);
a.resize(n+1);
while(m--)
{
scanf("%d %d\n", &p, &q);
a[p].push_back(q);
}
}
int pairup(int n)
{
if(viz[n]) return 0;
viz[n]=1;
vector<int>::iterator i;
for(i=a[n].begin();i!=a[n].end();++i)
if(!l[*i] || pairup(l[*i]))
{
l[*i]=n;
r[n]=*i;
return 1;
}
return 0;
}
int main()
{
citire();
int flow=0;
for(int i=1;i<=n;i++)
if(pairup(i)) ++flow;
else {memset(viz, 0, sizeof(viz)); flow+=pairup(i);}
freopen("felinare.out", "w", stdout);
printf("%d\n", n+n-flow);
return 0;
}