社区讨论

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 条回复,欢迎继续交流。

正在加载回复...