码迷,mamicode.com
首页 > 其他好文 > 详细

P1137 旅行计划

时间:2018-12-14 22:40:25      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:image   邻接表   pac   its   for   pre   main   std   图片   

技术分享图片

技术分享图片

技术分享图片

技术分享图片

/*拓扑排序去寻找点的拓扑序
便于DP,那么怎么去找
首先邻接表存边,然后dfs搜寻每一个点
最后进行拓扑排序,找到拓扑序*/
#include<bits/stdc++.h>
const int maxn = 100005;
const int maxm = 200005;
using namespace std;
int n,m,p=1;
int a,b;
int dp[maxn];
int h[maxn],v[maxm],zrj[maxm];
void add(int a,int b)
{
    zrj[p]=h[b];
    h[b]=p;
    v[p]=a;
    p++;
}
int dfs(int y,int x)
{
    if (dp[x]) return dp[x];
    for (int j=h[x],u=v[j]; j; j=zrj[j],u=v[j])
    {
        dp[x]=max(dfs(y+1,u)+1,dp[x]);
    }
    return dp[x];
}
int main()
{
    cin>>n>>m;
    for (int i=1; i<=m; i++)
    {
        cin>>a>>b;
        add(a,b);
    }
    for (int i=n; i>=1; i--)
        dfs(1,i);
    for (int i=1; i<=n; i++)
        cout<<dp[i]+1<<endl;
    return 0;
}

 

P1137 旅行计划

标签:image   邻接表   pac   its   for   pre   main   std   图片   

原文地址:https://www.cnblogs.com/xmex/p/10121592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!