80分,T了两个点,纯纯无语
查看原帖
80分,T了两个点,纯纯无语
35148
Lying_Flat666楼主2022/8/10 10:03
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1e5 + 10;
int head[N],ver[N],vis[N],nxt[N],n,m,tot=0,maxn;
inline int read()
{
    int x=0,w=1;
    char c=getchar();
    while (c>'9'||c<'0') {if (c=='-') w=-1; c=getchar();}
    while (c<='9'&&c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar();}
    return w*x;
}
void add(int u,int v)
{
    ver[++tot]=v;
    nxt[tot]=head[u];
    head[u]=tot;
}
void dfs(int x)
{
    if (vis[x]) return;
    vis[x]=1;
    for (int i=head[x];i;i=nxt[i])
    {
        int y=ver[i];
        maxn=max(y,maxn);
        if (vis[y]) continue;
        dfs(y);
    }
}
int main()
{
    int u,v;
    n=read(); m=read();
    for (int i=1;i<=m;++i)
    {
        u=read(); v=read();
        add(u,v);
    }
    for (int i=1;i<=n;++i)
    {
        memset(vis,0,sizeof(vis));
        maxn=i;
        dfs(i);
        printf("%d ",maxn);
    }
    printf("\n");
    return 0;
}
2022/8/10 10:03
加载中...