P1807 最长路(BFS)

P1807 最长路

在这里插入图片描述
输入输出样例
输入

2 1
1 2 1

输出

1

在这里插入图片描述

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<stack>
#include<queue>
#include<cstdlib>
#include <algorithm>
#include<string.h>
#include<math.h>
#define llu unsigned long long
using namespace std;

queue<int> q;
int d[1510],a[1510][1510];//d[i]记录i结点前的最长路,a[u][v]存储结点u,v间的最长路径

void bfs(int n)
{
    
    
	memset(d,-1,sizeof(d));
	d[1]=0;//第一个节点路径长度为0 
	q.push(1);
	while(!q.empty())
	{
    
    
		int t=q.front();
		q.pop();
		for(int i=1;i<=n;i++)
		{
    
    
			if(a[t][i]&&d[i]<d[t]+a[t][i])
			{
    
    
				d[i]=d[t]+a[t][i];
				q.push(i);
			}
		}
	}
	
}


int main()
{
    
    
	int n,m;
	cin >> n >> m ;
	
	for(int i=0;i<m;i++)
	{
    
    
		int u,v,w;
		cin >> u >> v >> w ;
		a[u][v]=max(a[u][v],w);//有多条路的时候选择最长的 
	}
	
	bfs(n);
	cout << d[n] << endl ;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/wangyurenwls/article/details/118719949