【Lv:3】
- 注册
- 2020/05/09
- 消息
- 19
- 金粒
- 4,819金粒
呃呃呃
[MD]
```cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 1008600;
vector<pair<long long, long long> > g[N];
long long d[N];
bool vis[N];
priority_queue<pair<long long, long long> > q;
int main(){
memset(vis, false, sizeof vis);
long long n, m, s;
scanf("%lld %lld %lld", &n, &m, &s);
for(long long i = 1; i <= n; i++) d = 2147483647;
for(long long i = 0; i < m; i++) {
long long u, v, w;
scanf("%lld %lld %lld", &u, &v, &w);
g.push_back({v, w});
}
d = 0;
q.push({0, s});
while(!q.empty()) {
long long u = q.top().second;
q.pop();
if(vis) continue;
vis = true;
for(size_t i = 0; i < g.size(); i++) {
long long v = g.first,
w = g.second;
if(d[v] > d + w) {
d[v] = d + w;
q.push({-d[v], v});
}
}
}
for(long long i = 1 ; i <= n; i++) printf("%lld ", d);
return 0;
}
```
[/MD]
[MD]
```cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 1008600;
vector<pair<long long, long long> > g[N];
long long d[N];
bool vis[N];
priority_queue<pair<long long, long long> > q;
int main(){
memset(vis, false, sizeof vis);
long long n, m, s;
scanf("%lld %lld %lld", &n, &m, &s);
for(long long i = 1; i <= n; i++) d = 2147483647;
for(long long i = 0; i < m; i++) {
long long u, v, w;
scanf("%lld %lld %lld", &u, &v, &w);
g.push_back({v, w});
}
d
q.push({0, s});
while(!q.empty()) {
long long u = q.top().second;
q.pop();
if(vis) continue;
vis = true;
for(size_t i = 0; i < g.size(); i++) {
long long v = g.first,
w = g.second;
if(d[v] > d + w) {
d[v] = d + w;
q.push({-d[v], v});
}
}
}
for(long long i = 1 ; i <= n; i++) printf("%lld ", d);
return 0;
}
```