Submission #893388

#TimeUsernameProblemLanguageResultExecution timeMemory
893388vjudge1Airplane (NOI23_airplane)C++17
100 / 100
485 ms64880 KiB
#include<bits/stdc++.h> #define taskname "ONEPIECE" #define el '\n' #define fi first #define sc second #define pii pair<int, int> #define all(v) v.begin(), v.end() #define int ll using namespace std; using ll=long long; using ull=unsigned long long; using ld=long double; #define Faster ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; const int maxn=1e6+2; const int mod=1e9+7; const int inf=1e15; int n,m,a[maxn],dp1[maxn],dp2[maxn],d[maxn],vis[maxn]; vector<int> adj[maxn]; void dijkstra(int x) { priority_queue<pii> pq; pq.push({0,x}); for(int i=1;i<=n;i++) vis[i]=0; while(!pq.empty()) { int x=pq.top().sc; int dis=-pq.top().fi; // cout<<"!"<<x<<" "<<dis<<"\n"; pq.pop(); if(vis[x]) continue; d[x]=dis; vis[x]=1; for(int y:adj[x]) { pq.push({-max(d[x]+1,a[y]),y}); } } } signed main() { if (fopen(taskname".INP","r")) { freopen(taskname".INP","r",stdin); freopen(taskname".OUT","w",stdout); } Faster cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++) { int u,v; cin>>u>>v; adj[u].push_back(v); adj[v].push_back(u); } dijkstra(1); for(int i=1;i<=n;i++) dp1[i]=d[i]; dijkstra(n); for(int i=1;i<=n;i++) dp2[i]=d[i]; int res=inf; for(int i=1;i<=n;i++) { res=min(res,2*max(dp1[i],dp2[i])); } for(int i=1;i<=n;i++) { for(int j:adj[i]) { res=min(res,2*max(dp1[i],dp2[j])+1); } } cout<<res<<"\n"; // for(int i=1;i<=n;i++) // { // cout<<i<<":"<<dp1[i]<<" "<<dp2[i]<<"\n"; // } }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:44:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |         freopen(taskname".INP","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:45:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |         freopen(taskname".OUT","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...