求调
  • 板块学术版
  • 楼主123456adgj
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/24 17:09
  • 上次更新2024/11/24 19:42:52
查看原帖
求调
1251882
123456adgj楼主2024/11/24 17:09

wa9个点

#include<bits/stdc++.h> 
#define ll long long
using namespace std;
ll kk,cnt,t,n,m,s,ka,kb,kc,dis[200001][11],vis[200001][11],head[200001],k,kw,minn=100000000000;
struct node{
	ll to,w,nextt;
}a[1000001];
struct priority{
	ll ans,id,ti;
 bool operator <(const priority &x)const {return x.ans<ans;}
};
priority_queue<priority> q;
int main(){
	scanf("%d%d%d%d%d",&n,&m,&k,&s,&t);
	for(int i=1;i<=n;i++)for(int j=1;j<=k;j++)dis[i][j]=1000000000;
	dis[s][0]=0;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&ka,&kb,&kc);
		 a[++cnt].to=kb;
		 a[cnt].w=kc;
		 a[cnt].nextt=head[ka];
		 head[ka]=cnt;
	}
	q.push((priority){0,s,0});
while(!q.empty()){
	priority jk=q.top();
	q.pop();
	ll o=jk.id,kk=jk.ti;
	if(!vis[o][kk]){
		vis[o][kk]=1;
		for(int i=head[o];i;i=a[i].nextt){
			ll u=a[i].to;
			if(dis[u][kk]>dis[o][kk]+a[i].w&&!vis[u][kk]){
				dis[u][kk]=dis[o][kk]+a[i].w;
				q.push((priority){dis[u][kk],u,kk});
			}
			if(kk<k){
				if(dis[u][kk+1]>dis[o][kk]&&!vis[u][kk+1]){
					dis[u][kk+1]=dis[o][kk];
					q.push((priority){dis[u][kk+1],u,kk+1});
				}
			}
		}
	}
}
for(int i=1;i<=k;i++)minn=min(minn,dis[t][i]);
cout<<minn;
	return 0;
}
2024/11/24 17:09
加载中...