Submission #1291512

#TimeUsernameProblemLanguageResultExecution timeMemory
1291512goodpjw2008Ceste (COCI17_ceste)C++20
160 / 160
494 ms25212 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct p{
    int x,y,z;
    bool operator>(const p& a) const {
        if(x!=a.x) return x>a.x;
        return y>a.y;
    }
};
vector<p>v[2002];
priority_queue<p,vector<p>,greater<p>>pq;
int ans[2002],bst[2002];
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);
    int n,m,a,b,t,c;
    cin>>n>>m;
    for(int i = 0; i < m; i++){
        cin>>a>>b>>t>>c;
        v[a].push_back({b,t,c});
        v[b].push_back({a,t,c});
    }
    pq.push({0,0,1});
    for(int i = 2; i <= n; i++)ans[i]=1e15;
    fill(bst,bst+n+1,1e9);
    while(!pq.empty()){
        p cur=pq.top();pq.pop();
        int x=cur.x,y=cur.y,z=cur.z;
        if(y>bst[z])continue;
        bst[z]=y;
        if(y>0&&x>0){
            ans[z]=min(ans[z],x*y);
        }
        for(auto &e:v[z]){
            pq.push({x+e.z,y+e.y,e.x});
        }
    }
    for(int i = 2; i <= n; i++){
        if(ans[i]>=1e15)cout<<-1<<'\n';
        else cout<<ans[i]<<'\n';
    }
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...