| 比赛 |
期末考试3 |
评测结果 |
AAAAAAAAAATTTTTTTTTT |
| 题目名称 |
hope I can jump |
最终得分 |
50 |
| 用户昵称 |
zhyn |
运行时间 |
32.647 s |
| 代码语言 |
C++ |
内存使用 |
4.16 MiB |
| 提交时间 |
2026-02-11 11:59:57 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n,q;
ll e[305][305];
ll dis[305];
bool vis[305];
#define inf 1e18
void dij(int s,int t,int p){
for(int i=1;i<=n;i++){
dis[i]=inf;
vis[i]=false;
}
dis[s]=0;
dis[0]=inf;
vis[p]=true;
while(true){
int u=0;
for(int i=1;i<=n;i++){
if(i==p){
continue;
}
if(!vis[i]&&dis[u]>dis[i]){
u=i;
}
}
if(u==0){
break;
}
vis[u]=true;
for(int i=1;i<=n;i++){
if(i==p){
continue;
}
if(dis[i]>dis[u]+e[u][i]){
dis[i]=dis[u]+e[u][i];
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
freopen("hopeicanjump.in","r",stdin);
freopen("hopeicanjump.out","w",stdout);
cin>>n>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>e[i][j];
}
}
while(q--){
int s,t,p;
cin>>s>>t>>p;
dij(s,t,p);
cout<<dis[t]<<"\n";
}
return 0;
}