제출 #196867

#제출 시각아이디문제언어결과실행 시간메모리
196867awlintqaa꿈 (IOI13_dreaming)C++14
18 / 100
1050 ms12780 KiB
    #define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
    #include <bits/stdc++.h>
    using namespace std;
    #define sqr 340
    #define mid (l+r)/2
    #define pb push_back
    #define ppb pop_back
    #define fi first
    #define se second
    #define lb lower_bound
    #define ub upper_bound
    #define ins insert
    #define era erase
    #define C continue
    #define mem(dp,i) memset(dp,i,sizeof(dp))
    #define mset multiset
    typedef long long ll;
    typedef long double ld;
    typedef pair<int,int> pi;
    typedef pair<ll,ll> pll;
    typedef vector<int> vi;
    typedef vector<ll> vll;
    typedef vector<pi> vpi;
    typedef vector<pll> vpll;
    const ll mod=1000000007;//998244353;
    const ll inf=1e18*4;
    const ld pai=acos(-1);
    #include "dreaming.h"
    ll n,m,mx,id;
    vpll v[100009];
    vll ret;
    ll done[100009];
    void fill(ll node,ll num){
      if(num>1e5){
        cout<<"fwefef"<<endl;
        exit(0);
      }
            done[node]=1;
            ret.pb(node);
            for(auto u:v[node]){
                    if(done[u.fi])C;
                    fill(u.fi,num+1);
            }
    }
    void MX(ll node,ll p,ll crnt,ll num){
      		if(num>1e5){
              cout<<"Fwefe"<<endl;
              exit(0);
            }
            if(crnt>mx)mx=crnt,id=node;
            for(auto u:v[node]){
                    if(u.fi==p)C;
                    MX(u.fi,node,crnt+u.se,num+1);
            }
    }
    pi go(){
            pll ans={1e9,1e9};
            for(auto u:ret){
                    mx=-1;
                    MX(u,u,0,0);
                    ans=min(ans,{mx,u});
            }
            return ans;
    }
    int travelTime(int N, int M, int L, int A[], int B[], int T[]) {
            n=N,m=M;
            for(int i=0;i<m;i++){
                    int a=A[i],b=B[i],c=T[i];
                    v[a].pb({b,c});
                    v[b].pb({a,c});
            }
            vpll all;
            for(int i=0;i<n;i++){
                    if(done[i])C;
                    ret.clear();
                    fill(i,0);
                    all.pb(go());
            }
            sort(all.begin(),all.end());
            reverse(all.begin(),all.end());
            for(int i=1;i<(int)all.size();i++){
                    ll a=all[0].se,b=all[i].se,c=L;
                    v[a].pb({b,c});
                    v[b].pb({a,c});
            }
            mx=id=-1;
            MX(0,0,0,0);
            mx=-1;
            MX(id,id,0,0);
            return mx;
    }
#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...