社区讨论
73pts求调,WA on#3 #4 #8
P4568[JLOI2011] 飞行路线参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhjgtax4
- 此快照首次捕获于
- 2025/11/04 02:20 4 个月前
- 此快照最后确认于
- 2025/11/04 02:20 4 个月前
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k;
const int maxn = 1e6 + 5;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
bool vis[maxn];
int dis[maxn],head[maxn],tot,s,t;
struct node
{
int to,next,cost;
}e[maxn];
void add(int u,int v,int w)
{
e[++tot].to = v;
e[tot].cost = w;
e[tot].next = head[u];
head[u] = tot;
}
void dij(int s)
{
memset(dis,0x3f3f3f3f,sizeof(dis));
dis[s] = 0;
q.push(make_pair(0,s));
while(!q.empty())
{
int u = q.top().second;
q.pop();
if(vis[u]) continue;
vis[u] = 1;
for(int i = head[u];i;i = e[i].next)
{
int y = e[i].to,z=e[i].cost;
if(dis[y] > dis[u] + z)
{
dis[y] = dis[u] + z;
q.push(make_pair(dis[y],y));
}
}
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n >> m >> k >> s >> t;
for(int i = 1;i <= m;i++)
{
int u,v,c;
cin >> u >> v >> c;
add(u,v,c);
add(v,u,c);
for(int j = 1;j <= k;j++)
{
add(u + (j - 1) * n,v + j * n,0);
add(v + (j - 1) * n,u + j * n,0);
add(u + j * n,v + j * n,c);
add(v + j * n,u + j * n,c);
}
}
for(int i = 1;i <= k;i++)
{
add(t + (i - 1) * n,t + i * n,0);
}
dij(s);
cout << dis[t + k*n] << endl;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...