답안 #696613

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
696613 2023-02-07T01:22:48 Z bachhoangxuan Autobus (COCI22_autobus) C++17
30 / 70
1000 ms 11816 KB
// Judges with GCC >= 12 only needs Ofast
// #pragma GCC optimize("O3,no-stack-protector,fast-math,unroll-loops,tree-vectorize")
// MLE optimization
// #pragma GCC optimize("conserve-stack")
// Old judges
// #pragma GCC target("sse4.2,popcnt,lzcnt,abm,mmx,fma,bmi,bmi2")
// New judges. Test with assert(__builtin_cpu_supports("avx2"));
// #pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma,tune=native")
// Atcoder
// #pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma")
#include<bits/stdc++.h>
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
uniform_real_distribution<> pp(0.0,1.0);
#define int long long
#define ld long double
#define pii pair<int,int>
#define piii pair<int,pii>
#define fi first
#define se second
const int inf=1e18;
const int mod=998244353;
const int mod2=1e9+7;
const int maxn=105;
const int maxq=1000005;
const int maxl=20;
const int maxa=1000005;
int power(int a,int n){
    int res=1;
    while(n){
        if(n&1) res=res*a%mod;
        a=a*a%mod;n>>=1;
    }
    return res;
}
vector<pii> query[maxn],edge[maxn];
int n,m,k,q,dist[maxn][maxn],ans[maxq];
void dijisktra(int s){
    for(int i=1;i<=n;i++){
        for(int j=0;j<=k;j++) dist[i][j]=inf;
    }
    priority_queue<piii,vector<piii>,greater<piii>> pq;
    dist[s][0]=0;pq.push({0,{s,0}});
    while(!pq.empty()){
        int u=pq.top().se.fi,num=pq.top().se.se,d=pq.top().fi;pq.pop();
        if(dist[u][num]!=d) continue;
        for(pii v:edge[u]){
            if(d+v.second<dist[v.first][num+1]){
                dist[v.first][num+1]=d+v.second;
                if(num+1<k) pq.push({d+v.second,{v.first,num+1}});
            }
        }
    }
    for(pii v:query[s]){
        int Min=inf;
        for(int j=0;j<=k;j++) Min=min(Min,dist[v.first][j]);
        ans[v.second]=(Min==inf?-1:Min);
    }
}
void solve(){
    cin >> n >> m;
    for(int i=1;i<=m;i++){
        int u,v,w;cin >> u >> v >> w;
        edge[u].push_back({v,w});
    }
    cin >> k >> q;k=min(k,n-1);
    for(int i=1;i<=q;i++){
        int u,v;cin >> u >> v;
        query[u].push_back({v,i});
    }
    for(int i=1;i<=n;i++){
        if(!query[i].empty()) dijisktra(i);
    }
    for(int i=1;i<=q;i++) cout << ans[i] << '\n';
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    int test=1;//cin >> test;
    while(test--) solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 596 KB Output is correct
2 Correct 2 ms 600 KB Output is correct
3 Correct 2 ms 600 KB Output is correct
4 Correct 2 ms 596 KB Output is correct
5 Correct 3 ms 608 KB Output is correct
6 Correct 5 ms 852 KB Output is correct
7 Correct 6 ms 852 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 25 ms 736 KB Output is correct
8 Correct 82 ms 828 KB Output is correct
9 Correct 4 ms 596 KB Output is correct
10 Correct 64 ms 724 KB Output is correct
11 Correct 26 ms 852 KB Output is correct
12 Correct 151 ms 1196 KB Output is correct
13 Correct 236 ms 10840 KB Output is correct
14 Correct 362 ms 10832 KB Output is correct
15 Execution timed out 1004 ms 11816 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 2 ms 596 KB Output is correct
8 Correct 2 ms 600 KB Output is correct
9 Correct 2 ms 600 KB Output is correct
10 Correct 2 ms 596 KB Output is correct
11 Correct 3 ms 608 KB Output is correct
12 Correct 5 ms 852 KB Output is correct
13 Correct 6 ms 852 KB Output is correct
14 Correct 25 ms 736 KB Output is correct
15 Correct 82 ms 828 KB Output is correct
16 Correct 4 ms 596 KB Output is correct
17 Correct 64 ms 724 KB Output is correct
18 Correct 26 ms 852 KB Output is correct
19 Correct 151 ms 1196 KB Output is correct
20 Correct 236 ms 10840 KB Output is correct
21 Correct 362 ms 10832 KB Output is correct
22 Execution timed out 1004 ms 11816 KB Time limit exceeded
23 Halted 0 ms 0 KB -