1109. Conference(二分图)

1109

二分图的模板题 不过这题题意 我纠结了好久 不知道是不是我对二分图不熟悉的原因

这题就是说 有n+m个人参加会议 要在这n+m中进行通话 求最少的连接数 就是每个人都得被连接上 这样求最大匹配就是了 再用总结点数减匹配的

 1 #include <iostream>

 2 #include<cstdio>

 3 #include<cstring>

 4 #include<algorithm>

 5 #include<stdlib.h>

 6 #include<vector>

 7 using namespace std;

 8 vector<int>ed[2010];

 9 int n,m,k,vis[2010],link[2010];

10 int find(int u)

11 {

12     int i;

13     for(i = 0 ; i < (int)ed[u].size() ; i++)

14     {

15         int v = ed[u][i];

16         if(vis[v])

17         continue;

18         vis[v] = 1;

19         if(link[v]==0||find(link[v]))

20         {

21             link[v] = u;

22             return 1;

23         }

24     }

25     return 0;

26 }

27 int main()

28 {

29     int i,u,v;

30     scanf("%d%d%d",&n,&m,&k);

31     for(i = 1; i <= k ; i++)

32     {

33         scanf("%d%d",&u,&v);

34         ed[u].push_back(v+n);

35         ed[v+n].push_back(u);

36     }

37     int num=0;

38     for(i = 1; i <= n ; i++)

39     {

40         memset(vis,0,sizeof(vis));

41         if(find(i))

42         num++;

43     }

44     printf("%d\n",n+m-2*num+num);

45     return 0;

46 }
View Code

 

你可能感兴趣的:(conf)