8.16日每日一题—最长路

_谦言万语 2022-08-16 20:58:30
加精
//floyd
#include <bits/stdc++.h>
#define MOD 1000000007
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
int n,m;
int f[1600][1600];
int main() {
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=n; j++) {
			if(i==j) f[i][j]=0;
			else f[i][j]=-INF;
		}
	while(m--) {
		int u,v,w;
		cin>>u>>v>>w;
		f[u][v]=max(f[u][v],w);
	}
	for(int k=1; k<=n; k++)
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
				if(f[i][k]!=-INF && f[k][j]!=-INF)
					f[i][j]=max(f[i][j],f[i][k]+f[k][j]);
	if(f[1][n]==-INF) cout<<-1;
	else cout<<f[1][n];
	return 0;
}
//toposort
#include <bits/stdc++.h>
#define MOD 1000000007
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
int n,m;
int f[1600][1600],d[1600];
queue<int> q;

void bfs() {
	q.push(1);//起点
	d[1]=0;
	while(!q.empty()) {
		int h=q.front();
		q.pop();
		for(int i=1; i<=n; i++) {
			if(f[h][i] && d[i]<d[h]+f[h][i]) {
				d[i]=d[h]+f[h][i];
				q.push(i);
			}
		}
	}
}


int main() {
	cin>>n>>m;
	memset(d,-1,sizeof(d));
	for(int i=1; i<=m; i++) {
		int u,v,w;
		cin>>u>>v>>w;
		f[u][v]=max(f[u][v],w);
	}
	bfs();
	cout<<d[n];
	return 0;
}

 

...全文
32 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
高校算法学习社区

2.5w+

社区成员

和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
帖子事件
创建了帖子
2022-08-16 20:58
社区公告

为了充分激发大家的创作热情和发文贡献,这里规定了高效算法学习社区对于积分榜的贡献排行榜的奖措施:

总榜奖励:(截止于2023年4月1日)

1.总榜第一:现金三百元

2.总榜第二与第三:Acwing算法课一套(价值150元可提现)

月榜:(从2020.年4月1日开始,每月一号结算)

1.月榜前三:请喝奶茶一杯

更多详细可看下:https://docs.qq.com/doc/DVnZJbkFPc1BNU2x2