90分求调
查看原帖
90分求调
1045387
Kobe_BryantQAQ楼主2024/8/25 10:00

必关

#include<bits/stdc++.h>
using namespace std;
int n,m,maxn=INT_MIN;
vector<int> edge[100005];
bool vis[100005];
queue<int> q;
void bfs(int x){
    vis[x]=true;
    q.push(x);
    while(!q.empty()){
        int v=q.front();
        maxn=max(maxn,v);
        q.pop();
        for(int i=0;i<edge[v].size();i++){
            if(!vis[edge[v][i]]) vis[edge[v][i]]=1,q.push(edge[v][i]);
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        int u,v;
        scanf("%d%d",&u,&v);
        edge[u].push_back(v);
    }
    for(int i=1;i<=n;i++){
        sort(edge[i].begin(),edge[i].end());
    }
    for(int i=1;i<=n;i++){
        maxn=INT_MIN;
        memset(vis,false,sizeof(vis));
        bfs(i);
        printf("%d ",maxn);
    }
    return 0;
}
2024/8/25 10:00
加载中...