84pts求调 差第一个测试点
查看原帖
84pts求调 差第一个测试点
1108111
XYY62012楼主2024/11/3 09:31

玄关求调

#include<bits/stdc++.h>
using namespace std;
const int N=5000;
int n;
int head[N],to[N],nxt[N];
int dp[N][N];
void dfs(int x,int y){
	dp[x][1]=1;
	dp[x][0]=0;
	for(int i=head[x];i;i=nxt[i]){
		if(to[i]==y) continue;//防止返回父节点
		dfs(to[i],x);
		dp[x][0]+=dp[to[i]][1];
		dp[x][1]+=min(dp[to[i]][1],dp[to[i]][0]);
	}
}
int main(){
	cin>>n;
	int sum=0;
	for(int i=1;i<=n;i++){
		int a,k;
		cin>>a>>k;
		for(int j=1;j<=k;j++){
			int b;
			cin>>b;
			to[++sum]=b;
			nxt[sum]=head[a];
			head[a]=sum;
		}
	}
	dfs(0,-1);
	cout<<min(dp[0][0],dp[0][1]);
	return 0;
}
2024/11/3 09:31
加载中...