首页 > 其他分享 >poj 1325 Machine Schedule---二分图求最小顶点覆盖

poj 1325 Machine Schedule---二分图求最小顶点覆盖

时间:2023-09-12 12:35:48浏览次数:43  
标签:1325 int Schedule --- job edge 110 图求 include


二分图求最小顶点覆盖。。

注意本题说,机器开始在0开始,所以就是默认和0相连的job已经被完成了,所以我是从1开始扫的点

正常的话,要将edge【】【】和0相连的边值赋为0,表示该job已经被完成。。。


#include<stdio.h>
#include<string.h>

bool edge[110][110],visited[110];
int cx[110],cy[110];
int n,m,k;

int path(int u)
{
	int v;
	for(int v=1;v<m;v++)
		if(edge[u][v]&&!visited[v]){
			visited[v]=1;
			if(cy[v]==-1 || path(cy[v]))
			{
				cx[u]=v;
				cy[v]=u;
				return 1;
			}
		}
	return 0;
}
int maxmatch()
{
	int res=0;
	memset(cx,-1,sizeof(cx));
	memset(cy,-1,sizeof(cy));
	for(int i=1;i<n;i++){
		if(cx[i]==-1){
			memset(visited,0,sizeof(visited));
			res+=path(i);
		}
	}
	return res;
}
int main()
{
	int t;
	int i,j;
	int a,b,c;
	
	while(scanf("%d",&n),n){
		memset(edge,0,sizeof(edge));
		scanf("%d%d",&m,&k);
		while(k--){
			scanf("%d%d%d",&a,&b,&c);
			edge[b][c]=1;
		}
		printf("%d\n",maxmatch());
	}
}




标签:1325,int,Schedule,---,job,edge,110,图求,include
From: https://blog.51cto.com/u_16244339/7444320

相关文章

  • UVA-1401 - Remember the Word -----Trie前缀树
    题意:给出N个不同单词和一个长字符串S。把这个字符串分解成若干个单词的连接(单词尅重复使用),问有多少种方法?分析:令d[i]表示从字符i开始的字符串的分解方案数,则d[i]=sum{d[i+len[x]]|单词x是S[i...len]的前缀};详看《算法竞赛入门经典》---刘汝佳--Page208.......
  • stl--<map>的用法
    Themostfrequentnumber第一行输入n(n<1000000);第二行输入n个数,找出出现次数最多的数,入不只有一个答案,输出最小的答案;例:输入:6122235输出:2用的#include<map>,按键值(第一个数的值)排序,主要有:定义:map<int,float>m;......
  • a^b%c问题 ---模板
    (1)ABmodC.(1<=A,B<2^62,1<=C<=10^9)http://acm.bit.edu.cn/mod/programming/view.php?a=530快速幂----二分#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>usingnamespacestd;longlongquickpow(......
  • 树状数组--模板
    #include<stdio.h>#include<string.h>#defineN50050intn;intin[N];intLowbit(intt){ returnt&(-t);}intSum(intp){ intsum=0; while(p>0) { sum+=in[p]; p-=Lowbit(p); } returnsum;}voidplus(intp,intnum){ while(......
  • hdu-3926-Hand in Hand-并查集
    判断两个图是否同构。。用了并查集。。#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<queue>#include<stack>usingnamespacestd;#definelllonglongintn,m;structnode{ intfu; intsum; intf......
  • 古罗马--模板
    计算古罗马加法,输入不合法,则输出“Aha!Idon'tneedtocalculatethesum”。 测试用例1以文本方式显示I↵I↵以文本方式显示II↵1秒64M0#include<stdio.h>#include<string.h>#include<stdlib.h>charp[5][11][10];voiddabiao(){ memset(p,0,sizeof(p)); st......
  • opatch报补丁时,oui-patch.xml (Permission denied)报错
    前言一套19.19RAC环境,使用opatch工具安装数据库补丁,第一个节点成功安装,但在第二个节点执行opatch命令时报错。主要的错误有提示:/u01/app/oraInventory/ContentsXML/oui-patch.xml(Permissiondenied),具体如下所示。[grid@19crac235074478]$$ORACLE_HOME/OPatch/opatcha......
  • 最长上升子序列 ---模板
    #include<stdio.h>#include<string.h>intn;intp[100000];intdp[100000];intmain(){ inti,j,k; while(scanf("%d",&n)!=EOF){ for(i=1;i<=n;i++) scanf("%d",&p[i]); memset(dp,0,sizeof(dp)); dp[1]=1; ......
  • poj 1113 Wall-----凸包
    凸包问题。先按x坐标排序,x一样的按y排序。取p【0】为开始点,每个点与开始点相连,按x轴正方向,每条线段与x轴的夹角由小到大排序。然后选点求距离。。。本题求凸包的边长+以L为半径的园的周长。//自己的凸包模板#include<stdio.h>#include<string.h>#include<math.h>#include<a......
  • hdu 1372 Knight Moves 骑士的移动 bfs--马走日
    #include<stdio.h>#include<string.h>#include<queue>usingnamespacestd;charss[3],ee[3];intx1,y1,x2,y2;structpos{intx,y,step;}sta,end;intf[10][10];intdir[8][2]={1,2,1,-2,-1,2,-1,-2,2,1,2,-1,-2,1,-2,-1};boolfan......