62pts求助
查看原帖
62pts求助
847559
Chtholly__Nota楼主2025/7/22 11:36

代码

#include<bits/stdc++.h>
#define pn putchar('\n')
#define ps putchar(' ')
using namespace std;
typedef long long ll;

template <typename T> void re(T &t) {
	t=0; char ch=getchar(); int f=1;
	while (ch<'0'||ch>'9') { if (ch=='-') f=-1; ch=getchar(); }
	do { (t=((t<<3)+(t<<1)))+=(ch^48); ch=getchar(); } while ('0'<=ch&&ch<='9'); t*=f;
}

inline void wr(ll x){
    if(x<0) putchar('-'),x=-x;
    if(x>9) wr(x/10);
    putchar(x%10+'0');
}

int n,m;

vector<int> ve[100005];
int ans;
int dis[100005];
int d[100005];

int main(){
	re(n),re(m);
	for(int i=1;i<=m;i++){
		int x,y;
		re(x),re(y);
		ve[x].push_back(y);
		d[y]++;
	}
	queue<int> q;
	for(int i=1;i<=n;i++) 
		if(!d[i]) q.push(i);
	while(q.size()){
		auto t=q.front();
		q.pop();
		for(auto i:ve[t]){
			dis[i]=max(dis[i],dis[t]+1);
			d[i]--;
			if(!d[i]) q.push(i);
		}
	}
	for(int i=1;i<=n;i++) ans=max(ans,dis[i]);
	wr(ans);
    return 0;
}


2025/7/22 11:36
加载中...