社区讨论
0分球条
P1186玛丽卡参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mlt7bcey
- 此快照首次捕获于
- 2026/02/19 16:30 3 周前
- 此快照最后确认于
- 2026/02/22 22:35 2 周前
rt,一直输出0
CPP#include<bits/stdc++.h>
using namespace std;
int v[1005][1005];
int dp[1005];
int q[1005];
int e[1005],cnt;
bool vis[1005];
int n,m;
void dijkstra(int s){
for(int i=1;i<=n;i++){
dp[i]=0x3f3f3f3f;
}
dp[s]=0;
for(int i=1;i<=n;i++){
int t=-1;
for(int j=1;j<=n;j++){
if(!vis[j]&&(t==-1||dp[j]<dp[t])){
t=j;
}
}
if(t==-1){
break;
}
vis[t]=true;
for(int j=1;j<=n;j++){
if(!vis[j]&&v[t][j]!=0x3f3f3f3f&&dp[j]>dp[t]+v[t][j]){
dp[j]=dp[t]+v[t][j];
q[j]=t;
}
}
}
}
int dijkstrago1(int s){
for(int i=1;i<=n;i++){
dp[i]=0x3f3f3f3f;
vis[i]=0;
}
dp[s]=0;
for(int i=1;i<=n;i++){
int t=-1;
for(int j=1;j<=n;j++){
if(!vis[j]&&(t==-1||dp[j]<dp[t])){
t=j;
}
}
if(t==-1){
break;
}
vis[t]=true;
for(int j=1;j<=n;j++){
if(!vis[j]&&v[t][j]!=0x3f3f3f3f&&dp[j]>dp[t]+v[t][j]){
dp[j]=dp[t]+v[t][j];
}
}
}
return dp[1];
}
int main(){
int n,m,xxs=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
v[i][j]=0x3f3f3f3f;
}
v[i][i]=0;
}
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
v[x][y]=min(v[x][y],z);
v[y][x]=min(v[y][x],z);
}
dijkstra(1);
int c=n;
while(c!=1){
e[++cnt]=c;
c=q[c];
if(c==0){
break;
}
}
e[++cnt]=1;
reverse(e+1,e+cnt+1);
for(int i=1;i<cnt;i++){
int x=e[i];
int y=e[i+1];
int z=v[x][y];
v[x][y]=0x3f3f3f3f;
v[y][x]=0x3f3f3f3f;
xxs=max(xxs,dijkstrago1(n));
v[x][y]=z;
v[y][x]=z;
}
cout<<xxs;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...