找回密码
 中文实名注册
查看: 257|回复: 0

LP1137

[复制链接]

12

主题

21

帖子

1510

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1510
发表于 2024-5-16 21:01:19 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include<iostream>
#include<queue>
using namespace std;
int f[200001],in[200001],h[200001],tot,n,m;
queue<int> q;
struct Edge{
	int next,to;
}e[200001];
void add(int f,int t)
{
	e[++tot].to=t;
	e[tot].next=h[f];
	h[f]=tot;
}
void topsort()
{
	for(int i=1;i<=n;i++)
	{
		if(!in[i]) q.push(i);
		f[i]=1;
	}
	while(!q.empty())
	{
		int v=q.front();
		q.pop();
		for(int i=h[v];i;i=e[i].next)
		{
			int t=e[i].to;
			f[t]=max(f[t],f[v]+1);
			in[t]--;
			if(!in[t]) q.push(t); 
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		add(x,y);
		in[y]++;
	}
	topsort();
	for(int i=1;i<=n;i++) cout<<f[i]<<"\n";
	return 0; 
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

小黑屋|东台市机器人学会 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2024-11-1 11:39 , Processed in 0.038582 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表