Rt,是我哪里开小了吗QAQ
#include<bits/stdc++.h>
using namespace std;
int n, m, u, v, w, s, d[100010];
bool vis[100010];
priority_queue<pair<int, int> >q;
struct node{
int w, v;
};
vector<node>l[100010];
void insert(int u, int v, int w)
{
node tmp;
tmp.w = w;
tmp.v = v;
l[u].push_back(tmp);
}
int dij()
{
memset(d, 2000000010, sizeof(d));
memset(vis, false, sizeof(vis));
d[s] = 0;
q.push(make_pair(0, s));
while(q.size())
{
int x = q.top().second;
q.pop();
if(vis[x])continue;
vis[x] = 1;
for(int i = 0;i < l[x].size();i ++)
{
int y = l[x][i].v, z = l[x][i].w;
if(d[y] > d[x] + z)
{
d[y] = d[x] + z;
pair<int, int>qwq(-d[y], y);
q.push(qwq);
}
}
}
for(int i = 1;i <= n;i ++)
{
cout<<d[i]<<" ";
}
return 0;
}
int main()
{
scanf("%d%d%d", &n, &m, &s);
for(int i = 0;i < m;i ++)
{
scanf("%d%d%d", &u, &v, &w);
insert(u, v, w);
}
dij();
return 0;
}