发现了个奇怪的拓扑排序模板
  • 板块灌水区
  • 楼主MarsNotFound
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/12/26 13:45
  • 上次更新2023/12/26 18:25:17
查看原帖
发现了个奇怪的拓扑排序模板
973789
MarsNotFound楼主2023/12/26 13:45

不用链式前向星,用vector数组存储点

#include<bits/stdc++.h>
using namespace std;
int n,m,sum[10005];
int d[10005];
vector<int>g[105];
void toposort()
{
	queue<int>q;
	for(int i=1;i<=n;i++)
		if(d[i]==0)sum[i]=1,q.push(i);
	while(!q.empty())
	{
		int f=q.front();
		q.pop();
		for(int i=0;i<g[f].size();i++)
		{
			int t=g[f][i];
			d[t]--;
			sum[t]=max(sum[t],sum[f]+1);
			if(d[t]==0)q.push(t);
		}
	}
} 
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		d[y]++;
		g[x].push_back(y);
	}
	toposort();
	for(int i=1;i<=n;i++)
		cout<<sum[i]<<"\n";
	
	return 0;
}

参考题目:旅行计划

2023/12/26 13:45
加载中...