답안 #187319

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
187319 2020-01-12T16:59:18 Z PedroBigMan Shortcut (IOI16_shortcut) C++14
0 / 100
3 ms 380 KB
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include "shortcut.h"
using namespace std;
typedef int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=a; i<b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define INF 100000000000000000LL
ll insig;
#define In(vecBRO, LENBRO) REP(IBRO,0,LENBRO) {cin>>insig; vecBRO.pb(insig);}
void Out(vector<ll> x) {REP(i,0,x.size()) {cout<<x[i]<<" ";} cout<<endl;}

class WG //everything works for weighted directed graphs
{
    public:
    ll N; vector<vector<pl> > adj;
    vector<ll> pr; 
    
    WG(vector<vector<pl> > ad)
    {
        adj=ad; N=adj.size();
        REP(i,0,N) {pr.pb(false);}
    }
    
    void Reset()
    {
        REP(i,0,N) {pr[i]=false;}
    }
    
    ll Djikstra(ll s)
    {
        Reset();
        vector<ll> d; REP(i,0,N) {d.pb(INF);}
        d[s]=0;
        priority_queue<pl> q;
        q.push(mp(0,s));
        ll cur;
        while(!q.empty())
        {
            cur=q.top().ss; q.pop();
            if(pr[cur]) {continue;}
            pr[cur]=true; 
            REP(i,0,adj[cur].size())
            {
                if(d[adj[cur][i].ff]>d[cur]+adj[cur][i].ss)
                {
                    d[adj[cur][i].ff]=d[cur]+adj[cur][i].ss;
                    q.push(mp(-d[adj[cur][i].ff],adj[cur][i].ff));
                }
            }
        }
        return (*max_element(d.begin(),d.end()));
    }
};

long long find_shortcut(int n, std::vector<int> lll, std::vector<int> ddd, int ccc)
{
    if(n>100) {return -1;}
    ll N=(ll) n; ll c=(ll) ccc;
    vector<ll> l,r; 
    REP(i,0,lll.size()) {l.pb((ll) lll[i]);} 
    REP(i,0,ddd.size()) {r.pb((ll) ddd[i]);}
    vector<vector<pl> > adj; vector<pl> xx; REP(i,0,2*N) {adj.pb(xx);}
    REP(i,0,l.size())
    {
        adj[i].pb(mp(i+1,l[i]));
        adj[i+1].pb(mp(i,l[i]));
    }
    REP(i,0,r.size())
    {
        adj[i].pb(mp(N+i,r[i]));
        adj[N+i].pb(mp(i,r[i]));
    }
    WG G(adj);
    ll ans=INF;
    REP(a,0,N)
    {
        REP(b,a+1,N)
        {
            G.adj[a].pb(mp(b,c));
            G.adj[b].pb(mp(a,c));
            ll mav=-INF; REP(i,0,2*N) {mav=max(mav,G.Djikstra(i));}
            ans=min(ans,mav);
            G.adj[a].pop_back();
            G.adj[b].pop_back();
        }
    }
    return ans;
}

Compilation message

shortcut.cpp: In function 'void Out(std::vector<int>)':
shortcut.cpp:15:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define REP(i,a,b) for(ll i=a; i<b; i++)
shortcut.cpp:24:29:
 void Out(vector<ll> x) {REP(i,0,x.size()) {cout<<x[i]<<" ";} cout<<endl;}
                             ~~~~~~~~~~~~
shortcut.cpp:24:25: note: in expansion of macro 'REP'
 void Out(vector<ll> x) {REP(i,0,x.size()) {cout<<x[i]<<" ";} cout<<endl;}
                         ^~~
shortcut.cpp: In member function 'll WG::Djikstra(ll)':
shortcut.cpp:46:43: warning: overflow in implicit constant conversion [-Woverflow]
         vector<ll> d; REP(i,0,N) {d.pb(INF);}
                                           ^
shortcut.cpp:15:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define REP(i,a,b) for(ll i=a; i<b; i++)
shortcut.cpp:56:17:
             REP(i,0,adj[cur].size())
                 ~~~~~~~~~~~~~~~~~~~
shortcut.cpp:56:13: note: in expansion of macro 'REP'
             REP(i,0,adj[cur].size())
             ^~~
shortcut.cpp: In function 'long long int find_shortcut(int, std::vector<int>, std::vector<int>, int)':
shortcut.cpp:15:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define REP(i,a,b) for(ll i=a; i<b; i++)
shortcut.cpp:74:9:
     REP(i,0,lll.size()) {l.pb((ll) lll[i]);} 
         ~~~~~~~~~~~~~~           
shortcut.cpp:74:5: note: in expansion of macro 'REP'
     REP(i,0,lll.size()) {l.pb((ll) lll[i]);} 
     ^~~
shortcut.cpp:15:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define REP(i,a,b) for(ll i=a; i<b; i++)
shortcut.cpp:75:9:
     REP(i,0,ddd.size()) {r.pb((ll) ddd[i]);}
         ~~~~~~~~~~~~~~           
shortcut.cpp:75:5: note: in expansion of macro 'REP'
     REP(i,0,ddd.size()) {r.pb((ll) ddd[i]);}
     ^~~
shortcut.cpp:15:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define REP(i,a,b) for(ll i=a; i<b; i++)
shortcut.cpp:77:9:
     REP(i,0,l.size())
         ~~~~~~~~~~~~             
shortcut.cpp:77:5: note: in expansion of macro 'REP'
     REP(i,0,l.size())
     ^~~
shortcut.cpp:15:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define REP(i,a,b) for(ll i=a; i<b; i++)
shortcut.cpp:82:9:
     REP(i,0,r.size())
         ~~~~~~~~~~~~             
shortcut.cpp:82:5: note: in expansion of macro 'REP'
     REP(i,0,r.size())
     ^~~
shortcut.cpp:21:13: warning: overflow in implicit constant conversion [-Woverflow]
 #define INF 100000000000000000LL
             ^
shortcut.cpp:88:12: note: in expansion of macro 'INF'
     ll ans=INF;
            ^~~
shortcut.cpp:21:13: warning: overflow in implicit constant conversion [-Woverflow]
 #define INF 100000000000000000LL
             ^
shortcut.cpp:95:21: note: in expansion of macro 'INF'
             ll mav=-INF; REP(i,0,2*N) {mav=max(mav,G.Djikstra(i));}
                     ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB n = 4, 80 is a correct answer
2 Correct 3 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 380 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 296 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 256 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Incorrect 2 ms 376 KB n = 2, incorrect answer: jury 2000000001 vs contestant 1569325056
11 Halted 0 ms 0 KB -