1. 程式人生 > 實用技巧 >P1137 旅行計劃

P1137 旅行計劃

//
//  main.cpp
//  P1137 旅行計劃
//
//  Created by CONIO on 2020/12/14.
//

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <queue>
#include <vector>
#include <stack>
using namespace std;
const int N=100005,M=200005;

inline int read()
{
    char c = getchar(); int x = 0;
    for (; !isdigit(c); c = getchar());
    for (; isdigit(c); c = getchar())
        x = x * 10 + c - '0';
    return x;
}

int n,m,dp[N],indeg[N];
vector<int>G[N];

void dfs(int u)
{
    for(int i=0;i<G[u].size();i++)
    {
        int v= G[u][i];
        if(dp[u]+1>dp[v])
        {
            dp[v]=dp[u]+1;
            dfs(v);
        }
    }
}

int main(int argc, const char * argv[]) {
    // insert code here...
    cin>>n>>m;
    dp[1]=1;
    for(int i=1;i<=m;i++)
    {
        int u=read();
        int v=read();
        G[u].push_back(v);
        indeg[v]++;
    }
    for(int i=1;i<=n;i++)
    {
        if(indeg[i]==0)
        {
            dp[i]=1;
            dfs(i);
        }
    }
    for(int i=1;i<=n;i++) cout<<dp[i]<<endl;

    return 0;
}