感觉和dfs+拓扑的题解一样,为什么tle
  • 板块P1137 旅行计划
  • 楼主masa
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/9/25 19:09
  • 上次更新2023/11/4 05:39:53
查看原帖
感觉和dfs+拓扑的题解一样,为什么tle
65600
masa楼主2021/9/25 19:09

感觉原码可读性很强,就不注释了

#include<iostream>
#include<vector>
using namespace std;
int inline read()
{
	int s=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-')f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		s=s*10+c-'0';
		c=getchar();
	}
	return s*f;
}
int ans[100010],n,m,x,y;
bool b[100010];
vector<int> a[100010];
void dfs(int step)
{
	int sum=0;
	for(int i=0;i<a[step].size() ;i++)
	{
		if(b[a[step][i]]==1)sum=max(sum,ans[a[step][i]]);
		else 
		{
			dfs(a[step][i]);
			sum=max(sum,ans[a[step][i]]);
		}
	}
	ans[step]=sum+1;
	!b[step];
}
int main()
{
	int n=read(),m=read();
	for(int i=1;i<=m;i++)
	{
		x=read(),y=read();
		a[y].push_back(x); 
	}
	for(int i=1;i<=n;i++)if(b[i]==0)dfs(i);
	for(int i=1;i<=n;i++)cout<<ans[i]<<"\n";
}
2021/9/25 19:09
加载中...