拓扑排序78分求调
  • 板块P1807 最长路
  • 楼主__O_w_O__
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/9/24 18:47
  • 上次更新2023/11/2 18:16:29
查看原帖
拓扑排序78分求调
1053567
__O_w_O__楼主2023/9/24 18:47

#5 #6 WA了,其他全对,拓扑排序做的,求大佬助调.
提交记录

#include <bits/stdc++.h>
using namespace std;

const int N = 10010;

vector<pair<int,int> > g[N];
queue<int> q;

int d[N];
int dis[N];

int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= m; i++)
	{
		int u, v, w;
		scanf("%d%d%d", &u, &v, &w);
		g[u].push_back(make_pair(v, w));
		d[v]++;
	}
	for (int i = 1; i <= n; i++)
	{
		if (d[i] == 0)
		{
			q.push(i);
		}
	}
	for (int i = 1; i <= n; i++)
	{
		dis[i] = -1;
	}
	dis[1] = 0;
	while (!q.empty())
	{
		int u = q.front(); q.pop();
		for (auto to : g[u])
		{
			int v = to.first;
			int w = to.second;
			dis[v] = max(dis[v], dis[u] + w);
			d[v]--;
			if (d[v] == 0)
			{
				q.push(v);
			}
		}
	}
	printf("%d\n", dis[n]);
	return 0;
}
2023/9/24 18:47
加载中...