一点疑问
查看原帖
一点疑问
54986
lemir3楼主2020/8/19 17:51

两种写法:

	for(i=1;i<=m;++i)add(i,m+rou[i].v,1),add(i,m+rou[i].u,1);
......
for(i=1;i<=m;++i)
	if(!e[head[i]].flow)printf("1\n");
	else printf("0\n");
for(i=1;i<=m;++i)add(i,m+rou[i].u,1),add(i,m+rou[i].v,1);
......
for(i=1;i<=m;++i)
	if(!e[head[i]].flow)printf("0\n");
	else printf("1\n");

输出方案的思路是比赛向人连边,u为第一个人,v为第二个人,然后取出比赛这个点的head指向的边(即这个点连出的最后一条边),如果有流量就说明比赛判给了这条边指向的点代表的人赢,这两种写法只是换了下顺序,样例输出分别是1 1 0 0 0和1 0 0 0 1,都没有问题,然而第一种ac,第二种方案错误70分,求解答.

2020/8/19 17:51
加载中...