萌新の疑问
查看原帖
萌新の疑问
220426
血色黄昏楼主2021/6/13 16:19

萌新求助

我一开始建图是这样的:

signed main()
{
	s = 0;
	t = n1 * 2 + n2 + n3 + 5;
	cin>>n1>>n2>>n3>>m1;
	for(int i = 1;i <= 2 * n1;i += 2)add(i, i + 1, 1);
	for(int i = n1 * 2 + 1;i <= n1 * 2 + n2;i ++)add(s, i, 1);
	for(int i = n1 * 2 + n2 + 1;i <= n1 * 2 + n2 + n3;i ++)add(i, t, 1);
	for(int i = 1;i <= m1;i ++)
	{
		int u = read(), v = read();
		add(n1 * 2 + v, u * 2 - 1, 1);
	}
	cin>>m2;
	for(int i = 1;i <= m2;i ++)
	{
		int u = read(), v = read();
		add(u * 2, n1 * 2 + n2 + v, 1);
	}
	while(bfs())ans += dfs(s, 1e18);
	cout<<ans<<endl;
	return 0;
}

后来我改成了这样:

signed main()
{
	s = 0;
	t = n1 * 2 + n2 + n3 + 1000;
	cin>>n1>>n2>>n3>>m1;
	for(int i = 1;i <= 2 * n1;i += 2)add(i, i + 1, 1);
	for(int i = n1 * 2 + 1;i <= n1 * 2 + n2;i ++)add(s, i, 1);
	for(int i = n1 * 2 + n2 + 1;i <= n1 * 2 + n2 + n3;i ++)add(i, t, 1);
	for(int i = 1;i <= m1;i ++)
	{
		int u = read(), v = read();
		add(n1 * 2 + v, u * 2 - 1, 1);
	}
	cin>>m2;
	for(int i = 1;i <= m2;i ++)
	{
		int u = read(), v = read();
		add(u * 2, n1 * 2 + n2 + v, 1);
	}
	while(bfs())ans += dfs(s, 1e18);
	cout<<ans<<endl;
	return 0;
}

可以看出,只是把 t 的坐标加的更大了。为什么前面那种 wa 50 后面 ac 啊/kk

2021/6/13 16:19
加载中...