社区讨论
萌新求助,,wa4个点
P1186玛丽卡参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi7ysew9
- 此快照首次捕获于
- 2025/11/21 05:49 4 个月前
- 此快照最后确认于
- 2025/11/21 05:49 4 个月前
CPP
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#define int long long
using namespace std;
const int N=1000005;
int pre[1005];
int cnt;
struct{
int to;
int from;
}s[1005];
int ans[1005];
int n,m,cnl;
int fina_ans;
vector< pair<int,int> > va[N<<1];
bool done[1005];
int dist[1005];
void print(int now)
{
if(pre[now])
{
ans[++cnt]=now;
print(pre[now]);
}
}
void spfa(int limt)
{
queue<int>v;
memset(done,0,sizeof(done));
for(int i=1;i<=n;i++)
dist[i]=1e8;
dist[1]=0;
v.push(1);
while(v.size())
{
int front=v.front();
v.pop();
done[front]=1;
for(int i=0;i<va[front].size();i++)
{
int to=va[front][i].first;
int dis=va[front][i].second;
if(front==s[limt].from&&to==s[limt].to)
continue;
if(dist[to]>dist[front]+dis)
{
dist[to]=dist[front]+dis;
if(!done[to])
{
v.push(to);
pre[to]=front;
}
}
}
}
fina_ans=max(fina_ans,dist[n]);
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,v;
cin>>a>>b>>v;
va[a].push_back(make_pair(b,v));
va[b].push_back(make_pair(a,v));
}
spfa(0);
print(n);
ans[++cnt]=1;
for(int i=cnt;i>=2;i--)
{
s[++cnl].from=ans[i];
s[cnl].to=ans[i-1];
}
for(int i=1;i<=cnl;i++)
spfa(i);
cout<<fina_ans;
}
萌新求助
回复
共 2 条回复,欢迎继续交流。
正在加载回复...