0分求助
查看原帖
0分求助
495599
CSZD楼主2022/9/13 19:08
#include<iostream>
#include<cstdio>
using namespace std;
int l[1010][1010],flag,n,m,q,u,v,a,j;
void dfs(int b,int c)
{
	if(flag==1)return;
	if(c==1)
	{
		if(l[b][1]==1||l[1][b]==1)flag=1;
		return;
	}
	for(int i=1;i<=n;i++)
	{
	    if(flag==1)return;
		if(l[b][i]==1||l[i][b]==1)
		{
			dfs(i,c-1);
		}
	}
}
int main()
{
	//freopen("work.in","r",stdin);
	//freopen("work.out","w",stdout);
	cin>>n>>m>>q;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v;
		l[u][v]=1;
	}
	for(int i=1;i<=q;i++)
	{
		flag=0;
		cin>>a>>j;
		dfs(a,j);
		if(flag==1)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;	
	}
	return 0;
}

而且

我一年前写过的代码现在看不懂(20分),哪位可以帮我解释一下QwQ

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int x[10010];
int main()
{
   
    int n,m,q,a,b,s=0;
    cin>>n>>m>>q;
    for(int i=1;i<=m;i++)
    {
    	cin>>a>>b;
    	if(a==1)
    	{
    		s++;
    		x[s]=b;
		}
		else if(b==1)
    	{
    		s++;
    		x[s]=a;
		}
    }
    a=0;b=0;
    for(int i=1;i<=q;i++)
    {
    	int flag=0;
    	cin>>a>>b;
    	for(int j=1;j<=s;j++)
    	{
    		if(x[j]==a)
    		{
    			cout<<"Yes"<<endl;
    			flag=1;
    			break;
			}
		}
		if(!flag)cout<<"No"<<endl;
	}
	return 0;
}
2022/9/13 19:08
加载中...