| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 943773 | vjudge1 | Alias (COCI21_alias) | C++17 | 363 ms | 640 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
int INF=99999999;
void dijkstra(vector<vector<pair<int, int> > > &grafo,int origen,vector<int> &distancias)
{
    int n=grafo.size();
    vector<bool> visitados(n,false);
    distancias[origen]=0;
    for(int i=0;i<n;i++)///recorrer todos los nodos
    {
        int minNodo=-1,minDist=INF;
        for(int j=0;j<n;j++)
        {
            if(!visitados[j] && distancias[j]<minDist)
            {
                minDist=distancias[j];
                minNodo=j;
            }
        }
        if(minNodo==-1) break;
        visitados[minNodo]=true;
        for(int a=0;a<grafo[minNodo].size();a++)
        {
            int hacia=grafo[minNodo][a].first;
            int peso=grafo[minNodo][a].second;
            if(!visitados[hacia] && distancias[minNodo]+peso<distancias[hacia])
            {
                distancias[hacia]=distancias[minNodo]+peso;
            }
        }
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n,m;
    cin>>n>>m;
    string x,y;
    long long t;
    map<string,vector<pair<string,long long> > >db;
    for(int i=0;i<m;i++){
        cin>>x>>y>>t;
        db[x].push_back(make_pair(y,t));
    }
    int q;
    cin>>q;
    for(int i=0;i<q;i++){
        cin>>x>>y;
        map<string,long long>dist;
        queue<string>qu;
        dist[x]=0;
        qu.push(x);
        while(!qu.empty()){
            string next=qu.front();
            qu.pop();
            vector<pair<string,long long> >conexiones=db[next];
            for(int j=0;j<conexiones.size();j++){
                string recuerdo=conexiones[j].first;
                long long tiempo=conexiones[j].second;
                if(dist.count(recuerdo)==0){
                    dist[recuerdo]=dist[next]+tiempo;
                    if(recuerdo!=y)qu.push(recuerdo);
                }
                else dist[recuerdo]=min(dist[recuerdo],dist[next]+tiempo);
            }
        }
        if(dist.count(y))cout<<dist[y]<<"\n";
        else cout<<"Roger\n";
    }
    return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
