为什么输入数据还没有输完程序就停止了》
  • 板块学术版
  • 楼主qip101
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/11/22 12:52
  • 上次更新2023/10/27 01:58:12
查看原帖
为什么输入数据还没有输完程序就停止了》
333800
qip101楼主2022/11/22 12:52

这是保卫王国44分树形DP的部分分,样例输入一般程序就停止了

#include <bits/stdc++.h>
#define MAXN 100100
#define MAXM 5005
#define INF 2147483647
#define int long long
using namespace std;
int n,m,p[MAXN],f[MAXN][2];
vector <int> G[MAXN];
void add(int u,int v)
{
	G[u].push_back(v);
	G[v].push_back(u);
}
void dp(int u)
{
	for(int i=0;i<G[u].size();i++)
	{
		int v=G[u][i];
		if(v==u)
			continue;
		dp(v);
		f[u][1]+=(min(f[v][1],f[v][0])+p[i]);
		f[u][0]+=f[v][1];
	}
}
signed main()
{
	string s;
	cin >> n >> m >> s;
	for(int i=1;i<=n;i++)
		cin >> p[i];
	for(int i=1;i<=n-1;i++)
	{
		int u,v;
		cin >> u >> v;
		add(u,v);
	}
	while(m--)
	{
		memset(f,0,sizeof(f));
		int a,b,x,y;
		cin >> a >> x >> b >> y;
		f[a][1-x]=INF;f[b][1-y]=INF;
		dp(1);
		if(min(f[1][0],f[1][1])>=INF)
			cout << "-1" << endl;
		else
			cout << min(f[1][1],f[1][0]) << endl;
	}
	cout << endl;
	return 0;
}
2022/11/22 12:52
加载中...