80分,后四个点re,求助
查看原帖
80分,后四个点re,求助
754673
Jackson_Miller楼主2022/10/23 09:30
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
int dp[1005][1005];
vector<int> a[100005];
int dfs(int x,int l){
	if(dp[x][l]){
		return dp[x][l];
	}
	int ans=2;
	for(int i=0;i<a[x].size();i++){
		if(dfs(a[x][i],l-1)==1){
			ans=1;
		}
	}
	return  dp[x][l]=ans;
} 
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	scanf("%d%d%d",&n,&m,&q);
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		a[x].push_back(y);
		a[y].push_back(x);
	}
	for(int i=0;i<a[1].size();i++){
		dp[a[1][i]][1]=1;
	}
	for(int i=1;i<=n;i++){
		if(!dp[i][1]){
			dp[i][1]=2;
		}
	}
	for(int i=1;i<=q;i++){
		int x,l;
		scanf("%d%d",&x,&l);
		if(dfs(x,l)==1){
			printf("Yes\n");
		}else{
			printf("No\n");
		}
	}
	return 0;
}
2022/10/23 09:30
加载中...