• 【洛谷 2807】最长路


    题目描述

    设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j。设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径。

    输入格式

    输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v)。

    输出格式

    输出文件longest.out,一个整数,即1到n之间的最长路径.如果1到n之间没连通,输出-1。

    输入输出样例

    输入 #1
    2 1
    1 2 1
    输出 #1
    1

    说明/提示

    20%的数据,n≤100,m≤1000

    40%的数据,n≤1,000,m≤10000

    100%的数据,n≤1,500,m≤50000,最长路径不大于10^9

    题解:woc最长路原来就这么简单!!!!!为什么我考场想不到呢!!!

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    typedef long long ll;
    using namespace std;
    const int oo=21474836;
    int n,m,k,cnt,x,y,z,s,t,dis[1550],vis[1550];
    struct node{
        int to;
        int val;
        int next;
    }e[50005];
    int head[1550];
    void add(int a,int b,int c){
        e[++cnt].to=b; e[cnt].val=c;
        e[cnt].next=head[a]; head[a]=cnt;
    }
    queue<int>q;
    int main(){
        freopen("1807.in","r",stdin);
        freopen("1807.out","w",stdout);
        scanf("%d %d",&n,&m);
        for(int i=1;i<=m;i++){
            scanf("%d %d %d",&x,&y,&z);
            add(x,y,z);
        }
        for(int i=1;i<=n;i++)
            dis[i]=0;
        q.push(1);
        dis[1]=0;
        vis[1]=1;
        while(!q.empty()){
            x=q.front();
            q.pop();
            vis[x]=0;
            for(int i=head[x];i!=0;i=e[i].next){
                int too=e[i].to;
                if(dis[too]<dis[x]+e[i].val)
                { 
                   dis[too]=dis[x]+e[i].val;
                    if(vis[too]==0){
                        vis[too]=1; q.push(too);
                    }
                } 
            }
        }
        if(dis[n]==0) cout<<-1;
        else cout<<dis[n]<<endl;
        return 0;
    }
  • 相关阅读:
    Python数据类型的可变与不可变
    垃圾回收机制详解、运算符和格式化输出
    Python变量详解
    计算机硬件的基本组成-大框架的建立
    Python语言介绍
    MySQL 安装教程
    Java中遍历Map对象的方式
    判断字段的值是否为空
    Java中判断某一字符串是否包含数字、字母和中文
    把字符串字节数组写入文件
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11755432.html
Copyright © 2020-2023  润新知