Submission #648646

#TimeUsernameProblemLanguageResultExecution timeMemory
648646mychecksedadGraph (BOI20_graph)C++17
0 / 100
15 ms23864 KiB
/* Author : Mychecksdead */ #include<bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; typedef long long int ll; typedef long double ld; #define MOD (1000000000+7) #define MOD1 (998244353) #define PI 3.1415926535 #define pb push_back #define setp() cout << setprecision(15) #define all(x) x.begin(), x.end() #define oset tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> #define debug(x) cerr << #x << " is " << x << '\n'; const int N = 1e6+100, M = 1e5+10, F = 2147483646, K = 20; int n, m; double best = MOD, bestb, val[N]; vector<pair<int, double>> g[N]; vector<bool> vis; bool ok, o; void dfs(int v, int p, double x){ val[v] = x; vis[v] = 1; for(auto k: g[v]){ int u = k.first; if(u == p) continue; double y = k.second - x; if(vis[u]){ ok = ok & (y == val[u]); }else dfs(u, v, y); } } void solve(){ cin >> n >> m; for(int i = 0; i < m; ++i){ int u, v, c; cin >> u >> v >> c; g[u].pb({v, c}); g[v].pb({u, c}); } o = 0; for(int i = -20; i <= 20; i += 1){ ok = 1; vis.clear(); vis.resize(n+1); for(int j = 1; j <= n; ++j) if(!vis[j]) dfs(j, j, (double)i/10.0); o |= ok; double sum = 0; for(int j = 1; j <= n; ++j) sum += abs(val[j]); if(ok) if(best>sum) best=sum, bestb=i; } if(o){ vis.clear(); vis.resize(n+1); for(int j = 1; j <= n; ++j) if(!vis[j]) dfs(j, j, (double)bestb/10.0); cout << "YES\n"; for(int i = 1; i <= n; ++i) cout << val[i] << ' '; }else cout << "NO\n"; } int main(){ cin.tie(0); ios::sync_with_stdio(0); int T = 1, aa; // cin >> T;aa=T; while(T--){ // cout << "Case #" << aa-T << ": "; solve(); cout << '\n'; } return 0; }

Compilation message (stderr)

Graph.cpp: In function 'int main()':
Graph.cpp:71:16: warning: unused variable 'aa' [-Wunused-variable]
   71 |     int T = 1, aa;
      |                ^~
#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...