标签:++ nat problems log assign 题意 jobs triple contains
InputThe input file for this program consists of several configurations. The first line of one configuration contains three positive integers: n, m (n, m < 100) and k (k < 1000). The following k lines give the constrains of the k jobs, each line is a triple: i, x, y.
The input will be terminated by a line containing a single zero.
OutputThe output should be one integer per line, which means the minimal times of restarting machine.
Sample Input
5 5 10 0 1 1 1 1 2 2 1 3 3 1 4 4 2 1 5 2 2 6 2 3 7 2 4 8 3 3 9 4 3 0
Sample Output
3
题意:输入三个数,n,m,k,再输入k行数,每行输入三个数i,x,y。问,使x,y连通的最小顶点覆盖
思路:用一次最大匹配的模板就好啦。
一大早wwrong两发来迎接我真是醉了,还有这道题哪里说了下标从1开始的???我找了半天没找到相应的语句
#include<stdio.h> #include<string.h> #define N 110 int n,m,k; int book[N],e[N][N],match[N]; int dfs(int u) { int i; for(i = 1; i <= m; i ++) { if(!book[i]&&e[u][i]) { book[i] = 1; if(!match[i]||dfs(match[i])) {//printf("i=%d u=%d \n",i,u); match[i] = u; return 1; } } } return 0; } int main() { int i,j,t1,t2,t3,sum; while(scanf("%d",&n),n!=0) { memset(e,0,sizeof(e)); memset(match,0,sizeof(match)); scanf("%d%d",&m,&k); for(i = 0; i < k; i ++) { scanf("%d%d%d",&t1,&t2,&t3); e[t2][t3] = 1; } sum = 0; for(i = 1; i <= n; i ++) { memset(book,0,sizeof(book)); if(dfs(i)) { sum ++;//printf("sum=%d\n",sum); } } printf("%d\n",sum); } return 0; }
【二分图入门专题1】C - Machine Schedule hdu1150 【最小顶点覆盖】
标签:++ nat problems log assign 题意 jobs triple contains
原文地址:http://www.cnblogs.com/chengdongni/p/7352278.html