比赛 防止浮躁的小练习V0.1 评测结果 AAAAAAAAA
题目名称 最长路 最终得分 100
用户昵称 NewBee 运行时间 0.039 s
代码语言 C++ 内存使用 1.08 MiB
提交时间 2016-10-07 16:43:43
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<queue>
#define Cu fclose(stdin);fclose(stdout);return 0;
#define Begin freopen("longest.in","r",stdin);freopen("longest.out","w",stdout);chul();Cu
using namespace std;
//designed by New_Beeؼ 
const int maxn=1510;
struct op{
	int fr,to,next,dis;
}r[50010];
queue<int> q;
int head[maxn];
int tim,dis[maxn];
bool flag[maxn];
int n,re;
int max(int x,int y){
	if(x>y)return x;
	return y;
}
void insert(int fr,int to,int pay){
	tim++;
	r[tim].to=to;
	r[tim].fr=fr;
	r[tim].next=head[fr];
	r[tim].dis=pay;
	head[fr]=tim;
}
void doublespfa(){
	memset(dis,-1,sizeof(dis));
	memset(flag,0,sizeof(flag));
	int x=1,y;dis[x]=0;
	q.push(x);
	while(!q.empty()){
		x=q.front();q.pop();
		flag[x]=0;
		for(int i=head[x];i;i=r[i].next){
			y=r[i].to;
			dis[y]=max(dis[y],dis[x]+r[i].dis);
			if(flag[y])continue;
			flag[y]=1;q.push(y);
		}
	}
}				
void chul(){
	scanf("%d%d",&n,&re);
	int s,t,p;
	for(int i=1;i<=re;i++){
		scanf("%d%d%d",&s,&t,&p);
		insert(s,t,p);
	}doublespfa();
	if(dis[n]==0)printf("-1");
	else printf("%d\n",dis[n]);
}
int main(){
	Begin;
}