社区讨论

求助

学术版参与者 9已保存回复 65

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
65 条
当前快照
1 份
快照标识符
@lobuondp
此快照首次捕获于
2023/10/30 03:14
2 年前
此快照最后确认于
2023/11/04 08:05
2 年前
查看原帖
CPP
题目描述
给定n个节点,m条边的有向图,询问图中的任意两个节点能否直接连通?如果能够直接连通回答Yes,否则回答No。

输入格式
输入包含多组输入。

每组输入:

第一行,两个整数n和m,n表示有n个节点,m表示有m条有向边。

接下来m行,每行两个数u和v,分别表示u到v有一条有向边

接下来1行,有一个整数q,表示接下来有q个询问次数

接下来q行,每行代表一个询问,两个整数a和b

输出格式
对于每组输入,输出q行,一行表示一个询问结果,如果a到b能够直接连通输出Yes,否则输出No

输入输出样列
输入样例12 1
0 1
2
0 1
1 0
输出样例1:
Yes
No
说明
注意:

n个节点的编号为0~n-12<=n<=500000

0<=m<=500000

0<=q<=500000,a!=b,输入保证没有自环和重边

【耗时限制】1000ms 【内存限制】64MB
CPP
#include<bits/stdc++.h>
using namespace std;
vector<int> g[500010];
int n,m,u,v,q;
int main()
{
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		cin>>u>>v;
		g[u].push_back(v);
	}
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>u>>v;
		if(g[u][v]) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
    return 0;
}

回复

65 条回复,欢迎继续交流。

正在加载回复...