Submission #447290

#TimeUsernameProblemLanguageResultExecution timeMemory
447290jhnah917Graph (BOI20_graph)C++14
0 / 100
2 ms2700 KiB
#include <bits/stdc++.h> #define x first #define y second using namespace std; using ll = long long; using PLL = pair<ll, ll>; void DIE(){ cout << "NO"; exit(0); } int N, M, S[202020], E[202020], W[202020]; PLL A[101010]; // ax + b bool C[101010]; vector<PLL> G[101010]; vector<double> X; vector<ll> V, Y; double R[101010]; void DFS(int v, ll mul, ll add){ V.push_back(v); A[v] = { mul, add }; C[v] = true; if(A[v].x == -1) Y.push_back(A[v].y); else Y.push_back(-A[v].y); for(auto [i,w] : G[v]){ PLL nxt(-mul, w - add); if(!C[i]) DFS(i, nxt.x, nxt.y); else if(A[i] == nxt) continue; else if(A[i].x == nxt.x && A[i].y != nxt.y) DIE(); else X.push_back(1.0 * (A[i].y - nxt.y) / (nxt.x - A[i].x)); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> M; for(int i=1; i<=M; i++){ cin >> S[i] >> E[i] >> W[i]; G[S[i]].emplace_back(E[i], W[i]); G[E[i]].emplace_back(S[i], W[i]); } for(int i=1; i<=N; i++){ if(C[i]) continue; V.clear(); X.clear(); Y.clear(); DFS(i, 1, 0); if(V.size() == 1) continue; sort(X.begin(), X.end()); X.erase(unique(X.begin(), X.end()), X.end()); if(X.size() > 1) DIE(); if(X.size() == 1){ for(auto j : V) R[j] = A[j].x * X[0] + A[j].y; } else{ sort(Y.begin(), Y.end()); int val = Y[Y.size() / 2]; for(auto j : V) R[j] = A[j].x * val + 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, ll, ll)':
Graph.cpp:25:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   25 |     for(auto [i,w] : G[v]){
      |              ^
#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...