记录
#include<bits/stdc++.h>
using namespace std;
const int maxn=10005;
int cnt,n,m,w,dis[maxn],f[maxn],vis[maxn];
struct node {
int first,second;
};
map<string,int> ind;
vector<node>a[maxn];
queue<int>q;
int inde(string x) {
if(ind.find(x)==ind.end()) {
ind[x]=cnt++;
}
return ind[x];
}
int main() {
cin>>n>>m;
for(int i=1; i<=m; i++) {
int t;
string x,y;
cin>>x>>y>>t;
a[inde(x)].push_back((node) {
inde(y),t
});
}
cin>>w;
while(w--) {
memset(dis,0x3f,sizeof(dis));
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
string x,b;
int k1,k2;
cin>>x>>b;
k1=inde(x);
k2=inde(b);
dis[k1]=0;
q.push(k1);
f[k1]=1;
while(!q.empty()) {
int k3=q.front();
f[k3]=0;
vis[k3]=1;
q.pop();
for(int i=0; i<a[k3].size(); i++) {
if(dis[k3]+a[k3][i].second<dis[a[k3][i].first]) {
dis[a[k3][i].first]=dis[k3]+a[k3][i].second;
if(f[a[k3][i].first]==0) {
q.push(a[k3][i].first);
f[a[k3][i].first]=1;
}
}
}
}
if(vis[k2]!=0)cout<<dis[k2]<<endl;
else cout<<"Roger"<<endl;
}
}