| 比赛 |
期末考试3 |
评测结果 |
EEEEEEEEEEEEEEEEEEEE |
| 题目名称 |
hope I can jump |
最终得分 |
0 |
| 用户昵称 |
彭欣越 |
运行时间 |
2.993 s |
| 代码语言 |
C++ |
内存使用 |
3.35 MiB |
| 提交时间 |
2026-02-11 11:06:12 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=310;
int n,m,a[N][N],dis[310],mk[310],ans;
struct edge {
int dis,pos;
bool operator <(const edge &o) const{
return o.dis<dis;
}
};
priority_queue<edge>q;
void dijkstra (int s,int p) {
memset(mk,0,sizeof(mk));
memset(dis,0x3f,sizeof(dis));
q.push({0,s});
dis[s]=0;
while (!q.empty()) {
edge t=q.top();
q.pop();
int u=t.pos;
if (mk[u]==1) continue;
mk[u]=1;
for (int i=1;i<=n;i++) {
if (i==u||i==p) continue;
if (dis[u]+a[u][i]<dis[i]) {
dis[i]=dis[u]+a[u][i];
q.push({dis[i],i});
}
}
}
}
int main () {
freopen("hopeicanjump.in","r",stdin);
freopen("hopeicanjump.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n >> m;
for (int i=1;i<=n;i++) {
for (int j=1;j<=n;j++) {
cin >> a[i][j];
}
}
while (m--) {
int s,t,p;
cin >> s >> t >> p;
dijkstra(s,p);
cout << dis[t] <<endl;
}
return 0;
}