码迷,mamicode.com
首页 > 系统相关 > 详细

HDU 1150 - Machine Schedule

时间:2016-05-20 23:55:17      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

加深了我对最小点覆盖的理解
将每个任务的两台机器连线,问题是选取最少的点来覆盖所有的连线,即最小点覆盖

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <vector>
 5 using namespace std;
 6 const int maxn=105;
 7 vector<int>map[105];
 8 int link[maxn],vis[maxn];
 9 int n,m,k;
10 bool dfs(int t)
11 {
12     int i,x,size=map[t].size();
13     for(i=0;i<size;i++)
14     {
15         x=map[t][i];
16         if(!vis[x])
17         {
18             vis[x]=1;
19             if(link[x]==-1||dfs(link[x]))
20             {
21                 link[x]=t;
22                 return 1;
23             }
24         }
25     }
26     return 0;
27 }
28 int main()
29 {
30     int i,a,b,c;
31     while(~scanf("%d",&n)&&n)
32     {
33         scanf("%d%d",&m,&k);
34         for(i=1;i<=n;i++) map[i].clear();
35         for(i=0;i<k;i++)
36         {
37             scanf("%d%d%d",&a,&b,&c);
38             if(b&&c) map[b].push_back(c);
39         }
40         memset(link,-1,sizeof(link));
41         int ans=0;
42         for(i=1;i<=n;i++)
43         {
44             memset(vis,0,sizeof(vis));
45             if(dfs(i)) ans++;
46         }
47         printf("%d\n",ans);
48     }
49 }

 

HDU 1150 - Machine Schedule

标签:

原文地址:http://www.cnblogs.com/nicetomeetu/p/5513623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!