codeforces 721C journey

Posted ziliuziliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 721C journey相关的知识,希望对你有一定的参考价值。

1.暴力dp就可以。

2.不仅1号点没有入度。。。要把整张图拿去拓扑。再初始化的时候仅dp[1][1]=0即可。

3.inf要取好。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define amxn 5050
#define maxv 5050
#define maxe 5050
#define inf 0x3f3f3f3f
using namespace std;
int n,m,t,x,y,z,g[maxv],nume=0,d[maxv],pre[maxv][maxv];
int s1[maxv],t1=0;
int dp[maxv][maxv];
struct edge
{
    int v,nxt;
    int w;
}e[maxe];
queue <int> q;
bool vis[maxv];
void addedge(int u,int v,int w)
{
    e[++nume].v=v;e[nume].w=w;
    e[nume].nxt=g[u];g[u]=nume;
}
void bfs()
{
    dp[1][1]=0;
    for (int i=1;i<=n;i++)
    {
        if (!d[i])
        {
            vis[i]=true;
            q.push(i);
        }
    }
    while (!q.empty())
    {
        int head=q.front();q.pop();
        for (int i=g[head];i;i=e[i].nxt)
        {
            int v=e[i].v;
            if (d[v])
            {
                d[v]--;
                for (int j=2;j<=n;j++)
                {
                    if (dp[v][j]>dp[head][j-1]+e[i].w)
                    {
                        dp[v][j]=dp[head][j-1]+e[i].w;
                        pre[v][j]=head;
                    }
                }
                if (!d[v]) q.push(v);
            }
        }
    }
}
int main()
{
    scanf("%d%d%d",&n,&m,&t);
    for (int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        addedge(x,y,z);d[y]++;
    }
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            dp[i][j]=inf;
    bfs();
    int tmp=n+1;
    for (int i=n;i>=1;i--)
    {
        if (dp[n][i]<=t)
        {
            tmp=i;
            break;
        }
    }
    printf("%d\n",tmp);int now=n;
    while (now!=1)
    {
        s1[++t1]=now;
        now=pre[now][tmp];tmp--;
    }
    s1[++t1]=1;
    for (int i=t1;i>=1;i--)
        printf("%d ",s1[i]);
    return 0;
}

 

以上是关于codeforces 721C journey的主要内容,如果未能解决你的问题,请参考以下文章

codeforces 721C journey

Codeforces 721C [dp][拓扑排序]

CodeForces - 721C 拓扑排序+dp

[Codeforces 839C] Journey

CodeForces 721B Journey (DP)

Codeforces Round #374 (Div. 2) C. Journey