广元外国语的模拟赛(最短路)
来源:互联网 发布:大数据数据库设计 编辑:程序博客网 时间:2024/04/27 15:08
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=1e4+10;
struct node{
int cur,dis,kk;
};
priority_queue<node> q;
int n,m,k,s,t,a,b,c,head[2*maxn],
vis[2*maxn][15],v[2*maxn],w[2*maxn],nxt[2*maxn],cnt,d[maxn];
void add(int x,int y,int z){
++cnt; v[cnt]=y; w[cnt]=z; nxt[cnt]=head[x]; head[x]=cnt;
}
bool operator < (node xx,node yy){
return xx.dis<yy.dis;
}
inline int read(){
int num=0; char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9'){
num=num*10+ch-'0'; ch=getchar();
}
return num;
}
int main(){
//q.pop(); q.pop();
n=read(),m=read(),k=read(),s=read(),t=read();
for(int i=1;i<=m;i++){
a=read(),b=read(),c=read();
add(a,b,c); add(b,a,c);
}
for(int i=1;i<=n;i++){
for(int j=head[i];i;j=nxt[j]){
cout<<i<<" -> "<<v[j]<<endl;
}
}
//cout<<1<<endl;
node now1; now1.cur=s; now1.dis=0; now1.kk=0; q.push(now1);
memset(d,0x3f,sizeof(d));
d[s]=0;
//cout<<2<<endl;
while(!q.empty()){
node now; now=q.top(); q.pop();
int p=now.cur,qq=now.kk,dis1=now.dis;
cout<<p<<' '<<qq<<' '<<dis1<<endl;
if(vis[p][qq]) continue;
vis[p][qq]=true;
for(int i=head[p];i;i=nxt[i]){
if(!vis[v[i]][qq]&&d[v[i]]>dis1+w[i]){
d[v[i]]=dis1+w[i];
node now2; now2.cur=v[i]; now2.kk=qq;
now2.dis=dis1+w[i];
q.push(now2);
}
if(qq<k&&!vis[v[i]][qq+1]&&d[v[i]]>dis1){
node now2;
d[v[i]]=dis1;
now2.kk=qq+1; now2.dis=dis1;
q.push(now2);
}
}
}
cout<<d[t]<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=1e4+10;
struct node{
int cur,dis,kk;
};
priority_queue<node> q;
int n,m,k,s,t,a,b,c,head[2*maxn],
vis[2*maxn][15],v[2*maxn],w[2*maxn],nxt[2*maxn],cnt,d[maxn];
void add(int x,int y,int z){
++cnt; v[cnt]=y; w[cnt]=z; nxt[cnt]=head[x]; head[x]=cnt;
}
bool operator < (node xx,node yy){
return xx.dis<yy.dis;
}
inline int read(){
int num=0; char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9'){
num=num*10+ch-'0'; ch=getchar();
}
return num;
}
int main(){
//q.pop(); q.pop();
n=read(),m=read(),k=read(),s=read(),t=read();
for(int i=1;i<=m;i++){
a=read(),b=read(),c=read();
add(a,b,c); add(b,a,c);
}
for(int i=1;i<=n;i++){
for(int j=head[i];i;j=nxt[j]){
cout<<i<<" -> "<<v[j]<<endl;
}
}
//cout<<1<<endl;
node now1; now1.cur=s; now1.dis=0; now1.kk=0; q.push(now1);
memset(d,0x3f,sizeof(d));
d[s]=0;
//cout<<2<<endl;
while(!q.empty()){
node now; now=q.top(); q.pop();
int p=now.cur,qq=now.kk,dis1=now.dis;
cout<<p<<' '<<qq<<' '<<dis1<<endl;
if(vis[p][qq]) continue;
vis[p][qq]=true;
for(int i=head[p];i;i=nxt[i]){
if(!vis[v[i]][qq]&&d[v[i]]>dis1+w[i]){
d[v[i]]=dis1+w[i];
node now2; now2.cur=v[i]; now2.kk=qq;
now2.dis=dis1+w[i];
q.push(now2);
}
if(qq<k&&!vis[v[i]][qq+1]&&d[v[i]]>dis1){
node now2;
d[v[i]]=dis1;
now2.kk=qq+1; now2.dis=dis1;
q.push(now2);
}
}
}
cout<<d[t]<<endl;
return 0;
}
阅读全文
0 0
- 广元外国语的模拟赛(最短路)
- 2017模拟赛 密室(多维最短路)
- 【NOIP 模拟题】旅行(最短路)
- 【NOI2015模拟8.17】最短路(shortest)
- 【NOIP2011模拟9.9】最短路
- 最短路【NOI2015模拟8.17】
- 最短路(最短路)
- 2017.1.18【初中部 】普及组模拟赛C组 小x的最短路 题解
- JZOJsenior2433.2017.04.08【NOIP 普及组】模拟赛C组 T1最短路上的统计
- jzoj P2433 【普及_模拟】最短路上的统计
- [容易] 最短路实例(有条件的最短路)
- poj2387(最简单的最短路)
- P3501NOIP2017模拟赛【2015多校联训6】益智游戏(最短路+top+dp)
- 【POJ】3463 Sightseeing 最短路+比最短路大一的路(最短路 or 最短路+DP)
- hdu 4634 Swipe Bo(模拟+最短路)
- 【NOIP 模拟题】邮递员送信(最短路)
- 【GDKOI2012模拟02.01】探险(最短路&&SPFA)
- jzoj3777. 【NOI2015模拟8.17】最短路(shortest)
- 云服务 IaaS,PaaS,SaaS 的区别
- Mybatis开启数据库字段自动映射为驼峰命名
- Spring, MyBatis 多数据源的配置和管理
- USART
- LightOJ
- 广元外国语的模拟赛(最短路)
- Informatica基础系列(五)——参数与变量
- 万向集团押注区块链
- SQL语句记录,查询今日某个活动签到是否正常
- 欢迎使用CSDN-markdown编辑器
- SQL Server 2008清空日志
- Android拖动控件改变其位置
- 你所不知的七个css单位(高度百分百用vh)
- Tomcat7基于Redis的Session共享实战一