#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
#define pb push_back
#define mp make_pair
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define lb lower_bound
#define ub upper_bound
#define sz(v) int((v).size())
#define do_not_disturb ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
void solve() {
int n, m;
cin >> n >> m;
vector <vector <pair <int, double>>> graph(n+1);
vector <pair <pii, double>> edges;
for (int i = 1; i <= m; i++) {
int a, b;
double c;
cin >> a >> b >> c;
edges.pb(mp(mp(a, b), c));
graph[a].pb(mp(b, c));
graph[b].pb(mp(a, c));
}
const int range = 251;
vector <vector <bool>> can(n+1, vector <bool> (range, 1));
vector <vector <double>> value(n+1, vector <double> (range)), sum(n+1, vector <double> (range));
vector <pair <double, int>> acc(n+1, mp(2e9, 0));
vector <int> link(n+1), saizu(n+1, 1);
iota(all(link), 0);
function <int(int)> find = [&](int n) {
if (link[n] == n) return n;
return link[n] = find(link[n]);
};
function <void(int, int)> unite = [&](int a, int b) {
a = find(a); b = find(b);
if (a == b) return;
if (saizu[a] < saizu[b]) swap(a, b);
saizu[a] += saizu[b];
link[b] = a;
};
for (auto to : edges) {
auto a = to.first.first, b = to.first.second;
unite(a, b);
}
vector <int> used(n+1);
function <void(int, double, int)> dfs = [&](int v, double val, int i) {
value[v][i] = val;
used[v] = 1;
for (auto to : graph[v]) {
if (used[to.first]) continue;
dfs(to.first, to.second-val, i);
}
};
set <int> reps;
for (int i = 1; i <= n; i++) reps.insert(find(i));
for (int j = 0; j < range; j++) {
for (int i = 1; i <= n; i++) {
if (i == find(i)) {
dfs(i, (j-range/2)*.1, j);
}
}
for (int i = 1; i <= n; i++) {
sum[find(i)][j] += fabs(value[i][j]);
}
for (auto to : edges) {
auto a = to.first.first, b = to.first.second;
auto c = to.second;
auto rep = find(a);
if (fabs(c-value[a][j]-value[b][j]) > 1e-9) {
can[rep][j] = 0;
}
}
fill(all(used), 0);
for (auto to : reps) {
if (can[to][j]) {
if (acc[to].first > sum[to][j]) {
acc[to].first = sum[to][j];
acc[to].second = j;
}
}
}
}
double ans = 0;
for (auto to : reps) {
ans += acc[to].first;
}
if (ans >= 2e9) {
cout << "NO" << endl;
return;
}
cout << "YES" << endl;
for (int i = 1; i <= n; i++) {
cout << fixed << setprecision(6) << value[i][acc[find(i)].second] << ' ';
}
}
int main() {
//~ do_not_disturb
int t = 1;
//~ cin >> t;
while (t--) {
solve();
}
return 0;
}
/*
7
4 2
5 7
3 4
6 3
1 3
4 5
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
answer = YES |
2 |
Correct |
0 ms |
212 KB |
answer = YES |
3 |
Correct |
0 ms |
212 KB |
answer = YES |
4 |
Correct |
1 ms |
212 KB |
answer = NO |
5 |
Correct |
0 ms |
212 KB |
answer = YES |
6 |
Correct |
0 ms |
212 KB |
answer = YES |
7 |
Correct |
1 ms |
212 KB |
answer = YES |
8 |
Correct |
0 ms |
212 KB |
answer = YES |
9 |
Correct |
0 ms |
212 KB |
answer = NO |
10 |
Correct |
1 ms |
212 KB |
answer = YES |
11 |
Correct |
0 ms |
212 KB |
answer = YES |
12 |
Correct |
1 ms |
212 KB |
answer = NO |
13 |
Correct |
1 ms |
212 KB |
answer = YES |
14 |
Correct |
0 ms |
212 KB |
answer = YES |
15 |
Correct |
1 ms |
212 KB |
answer = YES |
16 |
Correct |
0 ms |
212 KB |
answer = YES |
17 |
Correct |
0 ms |
212 KB |
answer = YES |
18 |
Correct |
0 ms |
212 KB |
answer = YES |
19 |
Correct |
0 ms |
212 KB |
answer = YES |
20 |
Correct |
0 ms |
212 KB |
answer = YES |
21 |
Correct |
0 ms |
212 KB |
answer = YES |
22 |
Correct |
0 ms |
212 KB |
answer = NO |
23 |
Correct |
0 ms |
212 KB |
answer = NO |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
answer = YES |
2 |
Correct |
0 ms |
212 KB |
answer = YES |
3 |
Correct |
0 ms |
212 KB |
answer = YES |
4 |
Correct |
1 ms |
212 KB |
answer = NO |
5 |
Correct |
0 ms |
212 KB |
answer = YES |
6 |
Correct |
0 ms |
212 KB |
answer = YES |
7 |
Correct |
1 ms |
212 KB |
answer = YES |
8 |
Correct |
0 ms |
212 KB |
answer = YES |
9 |
Correct |
0 ms |
212 KB |
answer = NO |
10 |
Correct |
1 ms |
212 KB |
answer = YES |
11 |
Correct |
0 ms |
212 KB |
answer = YES |
12 |
Correct |
1 ms |
212 KB |
answer = NO |
13 |
Correct |
1 ms |
212 KB |
answer = YES |
14 |
Correct |
0 ms |
212 KB |
answer = YES |
15 |
Correct |
1 ms |
212 KB |
answer = YES |
16 |
Correct |
0 ms |
212 KB |
answer = YES |
17 |
Correct |
0 ms |
212 KB |
answer = YES |
18 |
Correct |
0 ms |
212 KB |
answer = YES |
19 |
Correct |
0 ms |
212 KB |
answer = YES |
20 |
Correct |
0 ms |
212 KB |
answer = YES |
21 |
Correct |
0 ms |
212 KB |
answer = YES |
22 |
Correct |
0 ms |
212 KB |
answer = NO |
23 |
Correct |
0 ms |
212 KB |
answer = NO |
24 |
Correct |
2 ms |
724 KB |
answer = YES |
25 |
Correct |
1 ms |
468 KB |
answer = YES |
26 |
Correct |
2 ms |
596 KB |
answer = YES |
27 |
Correct |
2 ms |
596 KB |
answer = YES |
28 |
Correct |
3 ms |
724 KB |
answer = YES |
29 |
Correct |
2 ms |
724 KB |
answer = YES |
30 |
Correct |
2 ms |
724 KB |
answer = NO |
31 |
Correct |
2 ms |
596 KB |
answer = YES |
32 |
Correct |
2 ms |
596 KB |
answer = YES |
33 |
Correct |
2 ms |
596 KB |
answer = YES |
34 |
Correct |
2 ms |
724 KB |
answer = YES |
35 |
Correct |
2 ms |
596 KB |
answer = YES |
36 |
Correct |
2 ms |
596 KB |
answer = YES |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
answer = YES |
2 |
Correct |
0 ms |
212 KB |
answer = YES |
3 |
Correct |
0 ms |
212 KB |
answer = YES |
4 |
Correct |
1 ms |
212 KB |
answer = NO |
5 |
Correct |
0 ms |
212 KB |
answer = YES |
6 |
Correct |
0 ms |
212 KB |
answer = YES |
7 |
Correct |
1 ms |
212 KB |
answer = YES |
8 |
Correct |
0 ms |
212 KB |
answer = YES |
9 |
Correct |
0 ms |
212 KB |
answer = NO |
10 |
Correct |
1 ms |
212 KB |
answer = YES |
11 |
Correct |
0 ms |
212 KB |
answer = YES |
12 |
Correct |
1 ms |
212 KB |
answer = NO |
13 |
Correct |
1 ms |
212 KB |
answer = YES |
14 |
Correct |
0 ms |
212 KB |
answer = YES |
15 |
Correct |
1 ms |
212 KB |
answer = YES |
16 |
Correct |
0 ms |
212 KB |
answer = YES |
17 |
Correct |
0 ms |
212 KB |
answer = YES |
18 |
Correct |
0 ms |
212 KB |
answer = YES |
19 |
Correct |
0 ms |
212 KB |
answer = YES |
20 |
Correct |
0 ms |
212 KB |
answer = YES |
21 |
Correct |
0 ms |
212 KB |
answer = YES |
22 |
Correct |
0 ms |
212 KB |
answer = NO |
23 |
Correct |
0 ms |
212 KB |
answer = NO |
24 |
Correct |
2 ms |
724 KB |
answer = YES |
25 |
Correct |
1 ms |
468 KB |
answer = YES |
26 |
Correct |
2 ms |
596 KB |
answer = YES |
27 |
Correct |
2 ms |
596 KB |
answer = YES |
28 |
Correct |
3 ms |
724 KB |
answer = YES |
29 |
Correct |
2 ms |
724 KB |
answer = YES |
30 |
Correct |
2 ms |
724 KB |
answer = NO |
31 |
Correct |
2 ms |
596 KB |
answer = YES |
32 |
Correct |
2 ms |
596 KB |
answer = YES |
33 |
Correct |
2 ms |
596 KB |
answer = YES |
34 |
Correct |
2 ms |
724 KB |
answer = YES |
35 |
Correct |
2 ms |
596 KB |
answer = YES |
36 |
Correct |
2 ms |
596 KB |
answer = YES |
37 |
Correct |
4 ms |
1108 KB |
answer = YES |
38 |
Correct |
4 ms |
1108 KB |
answer = YES |
39 |
Correct |
11 ms |
2516 KB |
answer = YES |
40 |
Correct |
18 ms |
4180 KB |
answer = YES |
41 |
Correct |
17 ms |
4180 KB |
answer = NO |
42 |
Correct |
18 ms |
4180 KB |
answer = YES |
43 |
Correct |
20 ms |
4436 KB |
answer = YES |
44 |
Correct |
20 ms |
4472 KB |
answer = YES |
45 |
Incorrect |
21 ms |
4492 KB |
jury has the better answer: jans = YES, pans = NO |
46 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
answer = YES |
2 |
Correct |
0 ms |
212 KB |
answer = YES |
3 |
Correct |
0 ms |
212 KB |
answer = YES |
4 |
Correct |
1 ms |
212 KB |
answer = NO |
5 |
Correct |
0 ms |
212 KB |
answer = YES |
6 |
Correct |
0 ms |
212 KB |
answer = YES |
7 |
Correct |
1 ms |
212 KB |
answer = YES |
8 |
Correct |
0 ms |
212 KB |
answer = YES |
9 |
Correct |
0 ms |
212 KB |
answer = NO |
10 |
Correct |
1 ms |
212 KB |
answer = YES |
11 |
Correct |
0 ms |
212 KB |
answer = YES |
12 |
Correct |
1 ms |
212 KB |
answer = NO |
13 |
Correct |
1 ms |
212 KB |
answer = YES |
14 |
Correct |
0 ms |
212 KB |
answer = YES |
15 |
Correct |
1 ms |
212 KB |
answer = YES |
16 |
Correct |
0 ms |
212 KB |
answer = YES |
17 |
Correct |
0 ms |
212 KB |
answer = YES |
18 |
Correct |
0 ms |
212 KB |
answer = YES |
19 |
Correct |
0 ms |
212 KB |
answer = YES |
20 |
Correct |
0 ms |
212 KB |
answer = YES |
21 |
Correct |
0 ms |
212 KB |
answer = YES |
22 |
Correct |
0 ms |
212 KB |
answer = NO |
23 |
Correct |
0 ms |
212 KB |
answer = NO |
24 |
Correct |
2 ms |
724 KB |
answer = YES |
25 |
Correct |
1 ms |
468 KB |
answer = YES |
26 |
Correct |
2 ms |
596 KB |
answer = YES |
27 |
Correct |
2 ms |
596 KB |
answer = YES |
28 |
Correct |
3 ms |
724 KB |
answer = YES |
29 |
Correct |
2 ms |
724 KB |
answer = YES |
30 |
Correct |
2 ms |
724 KB |
answer = NO |
31 |
Correct |
2 ms |
596 KB |
answer = YES |
32 |
Correct |
2 ms |
596 KB |
answer = YES |
33 |
Correct |
2 ms |
596 KB |
answer = YES |
34 |
Correct |
2 ms |
724 KB |
answer = YES |
35 |
Correct |
2 ms |
596 KB |
answer = YES |
36 |
Correct |
2 ms |
596 KB |
answer = YES |
37 |
Correct |
4 ms |
1108 KB |
answer = YES |
38 |
Correct |
4 ms |
1108 KB |
answer = YES |
39 |
Correct |
11 ms |
2516 KB |
answer = YES |
40 |
Correct |
18 ms |
4180 KB |
answer = YES |
41 |
Correct |
17 ms |
4180 KB |
answer = NO |
42 |
Correct |
18 ms |
4180 KB |
answer = YES |
43 |
Correct |
20 ms |
4436 KB |
answer = YES |
44 |
Correct |
20 ms |
4472 KB |
answer = YES |
45 |
Incorrect |
21 ms |
4492 KB |
jury has the better answer: jans = YES, pans = NO |
46 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
answer = YES |
2 |
Correct |
0 ms |
212 KB |
answer = YES |
3 |
Correct |
0 ms |
212 KB |
answer = YES |
4 |
Correct |
1 ms |
212 KB |
answer = NO |
5 |
Correct |
0 ms |
212 KB |
answer = YES |
6 |
Correct |
0 ms |
212 KB |
answer = YES |
7 |
Correct |
1 ms |
212 KB |
answer = YES |
8 |
Correct |
0 ms |
212 KB |
answer = YES |
9 |
Correct |
0 ms |
212 KB |
answer = NO |
10 |
Correct |
1 ms |
212 KB |
answer = YES |
11 |
Correct |
0 ms |
212 KB |
answer = YES |
12 |
Correct |
1 ms |
212 KB |
answer = NO |
13 |
Correct |
1 ms |
212 KB |
answer = YES |
14 |
Correct |
0 ms |
212 KB |
answer = YES |
15 |
Correct |
1 ms |
212 KB |
answer = YES |
16 |
Correct |
0 ms |
212 KB |
answer = YES |
17 |
Correct |
0 ms |
212 KB |
answer = YES |
18 |
Correct |
0 ms |
212 KB |
answer = YES |
19 |
Correct |
0 ms |
212 KB |
answer = YES |
20 |
Correct |
0 ms |
212 KB |
answer = YES |
21 |
Correct |
0 ms |
212 KB |
answer = YES |
22 |
Correct |
0 ms |
212 KB |
answer = NO |
23 |
Correct |
0 ms |
212 KB |
answer = NO |
24 |
Correct |
2 ms |
724 KB |
answer = YES |
25 |
Correct |
1 ms |
468 KB |
answer = YES |
26 |
Correct |
2 ms |
596 KB |
answer = YES |
27 |
Correct |
2 ms |
596 KB |
answer = YES |
28 |
Correct |
3 ms |
724 KB |
answer = YES |
29 |
Correct |
2 ms |
724 KB |
answer = YES |
30 |
Correct |
2 ms |
724 KB |
answer = NO |
31 |
Correct |
2 ms |
596 KB |
answer = YES |
32 |
Correct |
2 ms |
596 KB |
answer = YES |
33 |
Correct |
2 ms |
596 KB |
answer = YES |
34 |
Correct |
2 ms |
724 KB |
answer = YES |
35 |
Correct |
2 ms |
596 KB |
answer = YES |
36 |
Correct |
2 ms |
596 KB |
answer = YES |
37 |
Correct |
4 ms |
1108 KB |
answer = YES |
38 |
Correct |
4 ms |
1108 KB |
answer = YES |
39 |
Correct |
11 ms |
2516 KB |
answer = YES |
40 |
Correct |
18 ms |
4180 KB |
answer = YES |
41 |
Correct |
17 ms |
4180 KB |
answer = NO |
42 |
Correct |
18 ms |
4180 KB |
answer = YES |
43 |
Correct |
20 ms |
4436 KB |
answer = YES |
44 |
Correct |
20 ms |
4472 KB |
answer = YES |
45 |
Incorrect |
21 ms |
4492 KB |
jury has the better answer: jans = YES, pans = NO |
46 |
Halted |
0 ms |
0 KB |
- |