社区讨论
18分蒟蒻求助
P2939[USACO09FEB] Revamping Trails G参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mi7rt7li
- 此快照首次捕获于
- 2025/11/21 02:34 4 个月前
- 此快照最后确认于
- 2025/11/21 02:34 4 个月前
CPP
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<sstream>
#include<cctype>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<ctime>
#define ll long long
#define ull unsigned long long
#define ff first
#define ss second
#define rep(i,a,b) for(ll i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
const ll INF=2147483647;
inline ll read()
{
ll x=0,k=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')k=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return x*k;
}
struct edge{
ll u,v,w,next;
}e[1008886];
ll head[1008886],n,m,k,x,y,t,num,dis[1008886];
bool vis[1008886];
priority_queue<pair<ll,ll>,vector<pair<ll,ll> >,greater<pair<ll,ll> > >q;
void store(ll u,ll v,ll w)
{
e[++num].u=u,e[num].v=v,e[num].w=w;
e[num].next=head[u];
head[u]=num;
}
void dijkstra()
{
memset(vis,false,sizeof(vis));
rep(i,1,n*(k+1))dis[i]=INF;
dis[1]=0;
q.push(make_pair(0,1));
while(!q.empty())
{
ll s=q.top().ss;
q.pop();
if(!vis[s])
{
vis[s]=true;
for(ll i=head[s];i;i=e[i].next)
{
dis[e[i].v]=min(dis[e[i].v],dis[s]+e[i].w);
q.push(make_pair(dis[e[i].v],e[i].v));
}
}
}
}
int main()
{
n=read(),m=read(),k=read();
rep(i,1,m)
{
x=read(),y=read(),t=read();
store(x,y,t);
store(y,x,t);
}
rep(i,1,k)
{
rep(u,1,n)
{
for(ll j=head[u];j;j=e[j].next)
{
int v=e[j].v;
store(u+n*(i-1),v+n*i,0);
}
}
}
dijkstra();
printf("%lld",dis[n*(k+1)]);
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...