比赛 20121009 评测结果 AAAAAAAAA
题目名称 最长路 最终得分 100
用户昵称 QhelDIV 运行时间 0.022 s
代码语言 C++ 内存使用 3.30 MiB
提交时间 2012-10-09 20:02:17
显示代码纯文本
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("longest.in");
ofstream fout("longest.out");
int N,M,f[2000];
bool flag[2000];
class Node
{
public:
	int Name,leng;
	Node *Prev;
}*last[4000];

void ADD(int u,int v,int w)
{
Node *temp=new Node;
	temp->Name=v;
	temp->leng=w;
	temp->Prev=last[u];
	last[u]=temp;
}

void Initialize()
{
int i,U,V,W;
	fin>>N>>M;
	for(i=1;i<=N;i++)
		last[i]=NULL;
	for(i=1;i<=M;i++)
	{
		fin>>U>>V>>W;
		ADD(U,V,W);
	}
}

void dp()
{
int i;
	flag[1]=true;
	for(i=1;i<N;i++)
		if(flag[i])
			for(Node *p=last[i];p;p=p->Prev)
			{
				f[p->Name]=max(f[p->Name],f[i]+p->leng);
				flag[p->Name]=true;
			}
	if(flag[N]==true)
		fout<<f[N]<<endl;
	else
		fout<<-1<<endl;
}

int main()
{
	Initialize();
	
	dp();
	fin.close();
	fout.close();
	return 0;
}