제출 #938504

#제출 시각아이디문제언어결과실행 시간메모리
938504Gromp15Graph (BOI20_graph)C++17
34 / 100
1051 ms1824 KiB
#include <bits/stdc++.h> #define ll long long #define ar array #define db double #define all(x) x.begin(), x.end() #define sz(x) (int)x.size() using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define rint(l, r) uniform_int_distribution<int>(l, r)(rng) template<typename T> bool ckmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; } template<typename T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; } void test_case() { int n, m; cin >> n >> m; vector<vector<ar<int, 2>>> adj(n+1); for (int i = 0; i < m; i++) { int x, y, w; cin >> x >> y >> w; adj[x].push_back({y, 2*w}); adj[y].push_back({x, 2*w}); } vector<int> ans(n+1); vector<bool> vis2(n+1); vector<int> each(n+1), time(n+1); int timer = 1; for (int v = 1; v <= n; v++) if (!vis2[v]) { int comp_size = 0; vector<ar<int, 3>> edges; auto dfs = [&](auto&& s, int v) -> void { comp_size++, vis2[v] = 1; for (auto [u, w] : adj[v]) { if (!vis2[u]) s(s, u); edges.push_back({v, u, w}); } }; dfs(dfs, v); int ans2 = 1e9; bool found = 0; for (int i = -2*comp_size; i <= 2*comp_size; i++) { each[v] = i; vector<int> used; int sum = 0; auto dfs2 = [&](auto&& s, int v) -> void { time[v] = timer; used.emplace_back(v); sum += abs(each[v]); for (auto [u, w] : adj[v]) if (time[u] != timer) { each[u] = w - each[v]; s(s, u); } }; dfs2(dfs2, v); timer++; bool ok = 1; for (auto [x, y, w] : edges) { if (each[x] + each[y] != w) { ok = 0; break; } } if (ok && ckmin(ans2, sum)) { found = 1; for (int x : used) { ans[x] = each[x]; } } } if (!found) { cout << "NO\n"; return; } } cout << "YES\n"; cout << fixed << setprecision(1); for (int i = 1; i <= n; i++) cout << (db)ans[i] / 2 << " \n"[i==n]; } int main() { cin.tie(0)->sync_with_stdio(0); int t = 1; // cin >> t; while (t--) test_case(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...