Submission #447292

#TimeUsernameProblemLanguageResultExecution timeMemory
447292jhnah917Graph (BOI20_graph)C++14
100 / 100
207 ms30956 KiB
#include <bits/stdc++.h> #define x first #define y second using namespace std; using ll = long long; using ld = long double; using PLL = pair<ll, ll>; using PDD = pair<ld, ld>; inline void DIE(){ cout << "NO"; exit(0); } int N, M; vector<PLL> G[101010]; PDD A[101010]; bool C[101010]; vector<double> Fix; vector<ll> Can, Vis; double R[101010]; void DFS(int v, int mul, ll add){ if(!C[v]) A[v] = {mul, add}; else if(A[v].x == mul && A[v].y == add) return; else if(A[v].x == mul && A[v].y != add) DIE(); else{ Fix.push_back(1.0 * (A[v].y - add) / (mul - A[v].x)); return; } Vis.push_back(v); C[v] = true; if(mul == 1) Can.push_back(-add); else Can.push_back(add); for(auto [i,w] : G[v]) DFS(i, -mul, w-add); } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> M; for(int i=1; i<=M; i++){ int s, e, x; cin >> s >> e >> x; G[s].emplace_back(e, x); G[e].emplace_back(s, x); } for(int i=1; i<=N; i++){ if(C[i]) continue; Fix.clear(); Can.clear(); Vis.clear(); DFS(i, 1, 0); sort(Can.begin(), Can.end()); sort(Fix.begin(), Fix.end()); Fix.erase(unique(Fix.begin(), Fix.end()), Fix.end()); if(Fix.size() > 1) DIE(); double X = Fix.size() == 1 ? Fix[0] : Can[Can.size()/2]; for(auto j : Vis) R[j] = A[j].x * X + A[j].y; } cout << "YES\n"; for(int i=1; i<=N; i++) cout << R[i] << " "; }

Compilation message (stderr)

Graph.cpp: In function 'void DFS(int, int, ll)':
Graph.cpp:31:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   31 |     for(auto [i,w] : G[v]) DFS(i, -mul, w-add);
      |              ^
#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...