社区讨论

求查错

P5318【深基18.例3】查找文献参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mcealcf4
此快照首次捕获于
2025/06/27 12:08
8 个月前
此快照最后确认于
2025/11/04 06:57
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

const int N=1e6+10;

bool vis[N];
vector<int>g[N];

bool cmp(int a,int b)
{
	return a<b;
}

void dfs(int i)
{
	int j;
	cout<<i<<" ";
	vis[i]=1;
	for(j=0;j<g[i].size();j++)
		if(!vis[g[i][j]])
			dfs(g[i][j]);
	
}

void bfs(int i)
{
	queue<int>q;
	q.push(i);
	vis[i]=1;
	while(!q.empty())
	{
		int now=q.front();
		cout<<now<<" ";
		for(int j=0;j<g[now].size();j++)
		{
			if(!vis[g[now][j]])
			{
				q.push(g[now][j]);		
				vis[g[now][j]]=1;
			}
			
		}						
		q.pop();	
	}
}

int main()
{
	int i,j;
	int u,v;
	int n,m;
	
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		cin>>u>>v;
		g[u].push_back(v);
		sort(g[u].begin(),g[u].end(),cmp); 
	}
		
	for(i=1;i<=n;i++)
		if(!vis[i])dfs(i);
		
	memset(vis,0,sizeof(vis));
	cout<<endl;
	
	for(i=1;i<=n;i++)
		if(!vis[i])bfs(i);
	
	return 0;
}

回复

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

正在加载回复...