90 有一个点tle 如何减枝儿
查看原帖
90 有一个点tle 如何减枝儿
1012428
jiushua_楼主2023/10/3 20:24
#include <iostream>
#include <cstring>
using namespace std;

const int N = 100010;
int h[N],ne[N],e[N],idx;
bool st[N];
int n,m,maxx;

void add(int a,int b)
{
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int k)
{
	st[k]=true;
	for(int i=h[k];i!=-1;i=ne[i])
	{
		int j =e[i];
		if(!st[j])
		{
			if(maxx<j) maxx=j;
			dfs(j);
		}
	}
}
int main()
{
	memset(h,-1,sizeof h);
	cin >> n >> m;
	for(int i=1;i<=m;i++)
	{
		int a,b;
		cin >> a >> b;
		add(a,b);
	}
	for(int i=1;i<=n;i++)
	{
		maxx=i;
		dfs(i);
		cout << maxx << ' ';
		//for(int i=1;i<=n;i++) st[i]=false;
		memset(st,false,sizeof st);
	}
	return 0;
}
2023/10/3 20:24
加载中...