比赛 20121009 评测结果 AAAAAAAAA
题目名称 最长路 最终得分 100
用户昵称 苏轼 运行时间 0.115 s
代码语言 C++ 内存使用 3.18 MiB
提交时间 2012-10-09 20:02:04
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstdlib>
using namespace std;
int n,m,answer=-1;
vector<int>a[1510];
vector<int>b[1510];
void bfs(int x);
int main()
{
    freopen ("longest.in","r",stdin);
    freopen ("longest.out","w",stdout);
    cin>>n>>m;
    for (int i=0;i<m;i++)
    {
        int r,t,v;
        cin>>r>>t>>v;
        a[r].push_back(t);
        b[r].push_back(v);
    }
    bfs(1);
    cout<<answer;
    return 0;
}

void bfs(int x)
{
    int w[1510]={0};
    bool used[1510]={0};
    int q[60000]={0};
    int tou,wei;
    tou=wei=0;
    q[0]=x;
    used[x]=1;
    for (int i=0;i<=n;i++)
        w[i]=-1;
    w[x]=0;
    while (tou<=wei)
    {
        for (int i=0;i<a[q[tou]].size();i++)
        {
            int j;
            j=a[q[tou]][i];
            if (!used[j]&&w[q[tou]]+b[q[tou]][i]>w[j])
            {
                wei++;
                q[wei]=j;
                w[j]=w[q[tou]]+b[q[tou]][i];
                used[j]=1;
            }
            if (used[j]&&w[q[tou]]+b[q[tou]][i]>w[j])
            {
                w[j]=w[q[tou]]+b[q[tou]][i];
            }
        }
        used[q[tou]]=0;
        tou++;
    }
    answer=w[n];
}