#include
#include
#include
#include
#include
using namespace std;
struct node {
int A, B, C;
node(int a, int b, int c) {
A = a;
B = b;
C = c;
}
};
int main() {
int n, m;
cin >> n >> m;
vector distance(n + 1, 2e9);
vector graph;
for(int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
graph.push_back(node(a, b, c));
}
int S;
cin >> S;
distance[S] = 0;
for(int i = 0; i < n - 1; i++) {
for(int j = 0; j < m; j++){
int a =graph[j].A;
int b = graph[j].B;
int weight = graph[j].C;
if(distance[a] != 2e9 and distance[a] + weight < distance[b]) {
distance[b] = distance[a] + weight;
}
}
}
for(int i = 0; i < m; i++) {
int a= graph[i].A;
int b = graph[i].B;
int weight = graph[i].C;
if(distance[a] != 2e9 and distance[a] + weight < distance[b]) {
cout << "ima negativen ciklus" << endl;
}
}
for(int i = 0; i < n; i++) {
cout << distance[i] << " ";
}
return 0;
}
5 9
0 1 4
0 2 2
1 2 3
2 1 1
1 4 2
1 3 4
2 4 3
2 3 5
3 4 -5