update
This commit is contained in:
parent
f737de093d
commit
d368c89147
59
src/P3371/P3371.cpp
Normal file
59
src/P3371/P3371.cpp
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <functional>
|
||||||
|
#include <iostream>
|
||||||
|
#include <queue>
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
using ll = int64_t;
|
||||||
|
using std::cin, std::cout;
|
||||||
|
|
||||||
|
const ll maxn = 1e5+5;
|
||||||
|
ll n, m, s, dist[maxn], inf {(1ll<<31)-1};
|
||||||
|
std::vector<std::pair<ll, ll>> adj[maxn];
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
|
||||||
|
|
||||||
|
cin>>n>>m>>s;
|
||||||
|
|
||||||
|
std::fill(dist, dist+1+n, inf);
|
||||||
|
dist[s]=0;
|
||||||
|
for(ll i{1}; i<=m; i++){
|
||||||
|
ll u, v, w;
|
||||||
|
cin>>u>>v>>w;
|
||||||
|
for(auto& edge: adj[u]){
|
||||||
|
if(edge.first==v){
|
||||||
|
edge.second=std::min(edge.second, w);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
adj[u].emplace_back(v, w);
|
||||||
|
end:;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::priority_queue<std::pair<ll, ll>, std::vector<std::pair<ll, ll>>, std::greater<>> pq;
|
||||||
|
|
||||||
|
pq.emplace(0, s);
|
||||||
|
|
||||||
|
while(pq.size()){
|
||||||
|
auto [d, u] = pq.top();
|
||||||
|
pq.pop();
|
||||||
|
|
||||||
|
if(d>dist[u])continue;
|
||||||
|
|
||||||
|
for(auto& edge: adj[u]){
|
||||||
|
auto [v, w] {edge};
|
||||||
|
if(dist[u] + w < dist[v]){
|
||||||
|
dist[v] = dist[u] + w;
|
||||||
|
pq.emplace(dist[v], v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(ll i{1}; i<=n; i++){
|
||||||
|
cout<<dist[i]<<' ';
|
||||||
|
}
|
||||||
|
cout<<'\n';
|
||||||
|
}
|
16
src/P3371/P3371_1.in
Normal file
16
src/P3371/P3371_1.in
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
5 15 5
|
||||||
|
2 5 181
|
||||||
|
1 5 98
|
||||||
|
4 2 49
|
||||||
|
3 2 262
|
||||||
|
4 3 26
|
||||||
|
2 4 192
|
||||||
|
5 1 221
|
||||||
|
2 2 254
|
||||||
|
4 4 233
|
||||||
|
1 5 44
|
||||||
|
5 4 67
|
||||||
|
4 2 214
|
||||||
|
1 1 47
|
||||||
|
1 1 118
|
||||||
|
5 4 3
|
1
src/P3371/P3371_1.out
Normal file
1
src/P3371/P3371_1.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
221 52 29 3 0
|
23
src/P6147/P6147.cpp
Normal file
23
src/P6147/P6147.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include <cstdint>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
using ll = int64_t;
|
||||||
|
using std::cin, std::cout;
|
||||||
|
|
||||||
|
const ll maxn = 1e5+5;
|
||||||
|
ll n;
|
||||||
|
std::vector<ll> adj[maxn];
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
|
||||||
|
|
||||||
|
cin>>n;
|
||||||
|
for(ll i{1}; i<n; i++){
|
||||||
|
ll u, v;
|
||||||
|
cin>>u>>v;
|
||||||
|
adj[u].push_back(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user