社区讨论

#3wa求调

P3371【模板】单源最短路径(弱化版)参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo10i028
此快照首次捕获于
2023/10/22 13:12
2 年前
此快照最后确认于
2023/11/07 21:41
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
bool vis[114514];
const long long INF = 0x3f3f3f3f;
long long cnt;

struct edge
{
    int v;
    int w;
    int next;
} edge[1145141];
int head[114514];

void addedge(int a, int b, int c)
{
    cnt++;
    edge[cnt].v = b;
    edge[cnt].w = c;
    edge[cnt].next = head[a];
    head[a] = cnt;
}
int main()
{
    long long minn;
    long long dis[114514];
    int n, m, s;
    int a, b, c;
    cin >> n >> m >> s;

    for (int i = 1; i <= n; i++)
        dis[i] = INF;
    for (int i = 0; i < m; i++)
    {
        cin >> a >> b >> c;
        addedge(a, b, c);
    }
    int cur = s;
    dis[s] = 0;
    while (!vis[cur])
    {
        vis[cur] = true;
        for (int i = head[cur]; i != 0; i = edge[i].next)
        {
            if (!vis[edge[i].v] && dis[edge[i].v] > dis[cur] + edge[i].w)
                dis[edge[i].v] = dis[cur] + edge[i].w;
        }
        long long minn = INF;
        for (int i = 1; i <= n; i++)
        {
            if (!vis[i] && minn > dis[i])
            {
                minn = dis[i];
                cur = i;
            }
        }
    }
    for (int i = 1; i <= n; i++)
        cout << dis[i] << " ";
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...