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

codeforces 721C journey

时间:2016-10-05 00:50:03      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/ziliuziliu/p/5931553.html

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