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...