WA on #1#2#3#4#6
#include <bits/stdc++.h>
using namespace std;
struct node
{
int to, w;
};
struct pq
{
int wi, i;
bool operator<(const pq &b)const
{
return b.wi < wi;
}
};
vector<node> ve[100005];
bitset<100005> vis;
int dis[100005];
void Dijkstra()
{
priority_queue<pq> qu;
qu.push(pq{0, 1});
dis[1] = 0;
while (qu.size())
{
pq now = qu.top();
qu.pop();
if (vis[now.i])continue;
vis[now.i] = 1;
for (int i = 0; i < (int)ve[now.i].size(); i++)
{
int to = ve[now.i][i].to;
if (dis[to] > dis[now.i] + ve[now.i][i].w)
{
dis[to] = dis[now.i] + ve[now.i][i].w;
qu.push(pq{dis[to], to});
}
}
}
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m, s;
cin >> n >> m >> s;
while (m--)
{
int u, v, w;
cin >> u >> v >> w;
ve[u].push_back(node{v, w});
}
fill(dis + 1, dis + n + 1, 1000000005);
Dijkstra();
for (int i = 1; i <= n; i++)cout << dis[i] << ' ';
return 0;
}