답안 #244653

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
244653 2020-07-04T13:37:52 Z kimbj0709 Toll (BOI17_toll) C++14
8 / 100
3000 ms 6144 KB
#pragma GCC optimization("O3")
#include<bits/stdc++.h>
using namespace std;
#define maxn 50050
#define f first
#define s second
vector<vector<pair<int,int> > > adj(maxn);
vector<int> top;
vector<int> visited(maxn,0);
void topsort(int node){
    visited[node] = 1;
    for(auto k:adj[node]){
        if(visited[k.f]==1){
            continue;
        }
        topsort(k.f);
    }
    top.push_back(node);
}
int32_t main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int k,no_of_vertex,no_of_edge,no_of_query;
    int input1,input2,input3;
    cin >> k >> no_of_vertex >> no_of_edge >> no_of_query;
    for(int i=0;i<no_of_edge;i++){
        cin >> input1 >> input2 >> input3;
        adj[input1].push_back({input2,input3});
    }
    for(int i=0;i<no_of_vertex;i++){
        if(visited[i]==0){
            topsort(i);
        }
    }
    reverse(top.begin(),top.end());
    vector<int> dist(maxn,INT_MAX);
    /*for(auto kk:top){
        cout << kk << " ";
    }
    cout << "--\n";*/
    for(int i=0;i<no_of_query;i++){
        cin >> input1 >> input2;
        for(int j=0;j<dist.size();j++){
            dist[j] = INT_MAX;
        }
        int pos = -1;
        for(int j=0;j<top.size();j++){
            if(top[j]==input1){
                pos = j;
                break;
            }
        }
        dist[input1] = 0;
        for(int j=pos;j<top.size();j++){
            if(dist[top[j]]==INT_MAX){
                continue;
            }
            for(auto kk:adj[top[j]]){
                if(dist[kk.first]>dist[top[j]]+kk.second){
                    dist[kk.first] = dist[top[j]]+kk.second;
                }
            }
        }

        if(dist[input2]==INT_MAX){
            cout << -1 << "\n";
        }
        else{
            cout << dist[input2] << "\n";
        }
    }


}

Compilation message

toll.cpp:1:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
toll.cpp: In function 'int32_t main()':
toll.cpp:43:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0;j<dist.size();j++){
                     ~^~~~~~~~~~~~
toll.cpp:47:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0;j<top.size();j++){
                     ~^~~~~~~~~~~
toll.cpp:54:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=pos;j<top.size();j++){
                       ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3099 ms 6144 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3077 ms 4704 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 1920 KB Output is correct
2 Correct 6 ms 1920 KB Output is correct
3 Correct 6 ms 1920 KB Output is correct
4 Correct 6 ms 1920 KB Output is correct
5 Correct 6 ms 1920 KB Output is correct
6 Correct 8 ms 1920 KB Output is correct
7 Correct 10 ms 1920 KB Output is correct
8 Correct 12 ms 2048 KB Output is correct
9 Correct 10 ms 2048 KB Output is correct
10 Correct 38 ms 4088 KB Output is correct
11 Correct 168 ms 4984 KB Output is correct
12 Correct 175 ms 5492 KB Output is correct
13 Correct 277 ms 5748 KB Output is correct
14 Correct 169 ms 5236 KB Output is correct
15 Correct 106 ms 3704 KB Output is correct
16 Correct 108 ms 3704 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 1920 KB Output is correct
2 Correct 6 ms 1920 KB Output is correct
3 Correct 6 ms 1920 KB Output is correct
4 Correct 6 ms 1920 KB Output is correct
5 Correct 6 ms 1920 KB Output is correct
6 Correct 8 ms 1920 KB Output is correct
7 Correct 10 ms 1920 KB Output is correct
8 Correct 12 ms 2048 KB Output is correct
9 Correct 10 ms 2048 KB Output is correct
10 Correct 38 ms 4088 KB Output is correct
11 Correct 168 ms 4984 KB Output is correct
12 Correct 175 ms 5492 KB Output is correct
13 Correct 277 ms 5748 KB Output is correct
14 Correct 169 ms 5236 KB Output is correct
15 Correct 106 ms 3704 KB Output is correct
16 Correct 108 ms 3704 KB Output is correct
17 Correct 2925 ms 5112 KB Output is correct
18 Correct 6 ms 1920 KB Output is correct
19 Correct 6 ms 1920 KB Output is correct
20 Correct 6 ms 1920 KB Output is correct
21 Correct 7 ms 2048 KB Output is correct
22 Correct 6 ms 1920 KB Output is correct
23 Correct 74 ms 1920 KB Output is correct
24 Correct 95 ms 2048 KB Output is correct
25 Correct 129 ms 2060 KB Output is correct
26 Correct 109 ms 2048 KB Output is correct
27 Correct 285 ms 4092 KB Output is correct
28 Execution timed out 3090 ms 5640 KB Time limit exceeded
29 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3099 ms 6144 KB Time limit exceeded
2 Halted 0 ms 0 KB -