Submission #1088371

#TimeUsernameProblemLanguageResultExecution timeMemory
1088371Rolo678Aesthetic (NOI20_aesthetic)C++14
0 / 100
323 ms37008 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<vector<pair<int,int>>>g(3e5+5); vector<long long>dp2(3e5+5,-1); vector<long long>dp(3e5+5,-1); signed main() { int n,m; cin >> n>>m; // cin >> n >> m; vector<pair<int,int>>e(m+1); for(int i = 1;i<=m;i++) { int a,b,w; cin >> a >> b >> w; //cout << 'o'; g[a].push_back({b,i}); g[b].push_back({a,i}); e[i] = {a,b}; //cout << 'o'; } //dfs(); dp[1] =0; queue<int>q; q.push(1); while(!q.empty()) { int v = q.front(); q.pop(); for(auto u : g[v]) { if(dp[u.first] == -1) { q.push(u.first); dp[u.first] = dp[v] + 1; } } } dp2[n] =0; //queue<int>q; q.push(n); while(!q.empty()) { int v = q.front(); q.pop(); for(auto u : g[v]) { if(dp2[u.first] == -1) { q.push(u.first); dp2[u.first] = dp2[v] + 1; } } } int mn = 1e9+5; int num = 0; int mn2 = 1e9+5; int s =0; for(int i = 1;i<=m;i++) { int v = e[i].first; int u = e[i].second; if(dp[u] == mn && dp2[v]== mn2) { num++; } else if(dp[u] + dp2[v]+1 <mn+mn2+1) { mn = dp[u]; mn2 = dp2[v]; num = 1; } if(i==m && (dp[u] + dp2[v]+1 <mn+mn2+1)) { num++; s= 1; } // cout << dp[i.first] + dp2[i.second]+1 << '\n'; } cout << mn+mn2+1 + (num == 1&& !s); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...