P2939 [USACO09FEB]改造路Revamping Trails(分层图最短路)「建议收藏」

P2939 [USACO09FEB]改造路Revamping Trails(分层图最短路)「建议收藏」P2939 [USACO09FEB]改造路Revamping Trails(分层图最短路)

大家好,又见面了,我是你们的朋友全栈君。

传送门

 

完了我好像连分层图最短路都不会了……果然还是太菜了……

具体来说就是记录一个步数表示免费了几条边,在dijkstra的时候以步数为第一关键字,距离为第二关键字。枚举边的时候分别枚举免不免费下一条边。然后其他基本就和普通的dijkstra一样了

据说这题卡spfa,特意把刚写好的spfa给改了(很懵逼为啥写spfa全T,我写挂了?)

 1 //minamoto
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<queue>
 5 #include<cstring>
 6 using namespace std;
 7 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
 8 char buf[1<<21],*p1=buf,*p2=buf;
 9 inline int read(){
10     #define num ch-'0'
11     char ch;bool flag=0;int res;
12     while(!isdigit(ch=getc()))
13     (ch=='-')&&(flag=true);
14     for(res=num;isdigit(ch=getc());res=res*10+num);
15     (flag)&&(res=-res);
16     #undef num
17     return res;
18 }
19 const int N=10005,M=100005,K=25;
20 struct node{
21     int x,cnt,dis;
22     node(){}
23     node(int x,int cnt,int dis):x(x),cnt(cnt),dis(dis){}
24     inline bool operator <(const node b)const
25     {
   
   return cnt!=b.cnt?cnt>b.cnt:dis>b.dis;}
26 };
27 priority_queue<node> q;
28 int vis[N][K],dis[N][K];
29 int head[N],Next[M],ver[M],edge[M],tot;
30 int n,m,k;
31 inline void add(int u,int v,int e){
32     ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e;
33     ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=e;
34 }
35 void dijkstra(){
36     memset(dis,0x3f,sizeof(dis));
37     memset(vis,0,sizeof(vis));
38     q.push(node(1,0,0)),dis[1][0]=0;
39     while(!q.empty()){
40         int u=q.top().x,cnt=q.top().cnt;q.pop();
41         if(vis[u][cnt]) continue;
42         vis[u][cnt]=1;
43         for(int i=head[u];i;i=Next[i]){
44             int v=ver[i];
45             if(dis[v][cnt]>dis[u][cnt]+edge[i]){
46                 dis[v][cnt]=dis[u][cnt]+edge[i];
47                 q.push(node(v,cnt,dis[v][cnt]));
48             }
49             if(cnt+1<=k&&dis[v][cnt+1]>dis[u][cnt]){
50                 dis[v][cnt+1]=dis[u][cnt];
51                 q.push(node(v,cnt+1,dis[v][cnt+1]));
52             }
53         }
54     }
55 }
56 int main(){
57 //    freopen("testdata.in","r",stdin);
58     n=read(),m=read(),k=read();
59     for(int i=1,u,v,e;i<=m;++i)
60     u=read(),v=read(),e=read(),add(u,v,e);
61     dijkstra();
62     printf("%d\n",dis[n][k]);
63     return 0;
64 }

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9614693.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107322.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Oracle修改用户密码过期时间「建议收藏」

    Oracle修改用户密码过期时间「建议收藏」部署的Web应用突然无法登录系统,后台尝试重新启动看能不能恢复,发现启动时在数据库连接池部分报错,怀疑无法连接数据库。使用的是oracle数据库,通过plsql发现也无法连接,从报错可以看出应该是用户密码过期了,因此需要要修改用户密码。通过sysdba身份登录,修改用户密码:alteruserusernameidentifiedbypassword;为了避免密码再次过期,打算设…

    2022年7月28日
    8
  • Ubuntu Server 18.04 安装图解教程

    Ubuntu Server 18.04 安装图解教程

    2021年7月11日
    73
  • tornado利用check_xsrf_cookie()防止XSRF

    tornado利用check_xsrf_cookie()防止XSRFtornado利用check_xsrf_cookie()防止XSRF

    2022年5月12日
    42
  • java8 list转换对象_Java8将List对象转换Map「建议收藏」

    java8 list转换对象_Java8将List对象转换Map「建议收藏」基于Java8的函数式编程概念,去实现List转换MappublicclassDemoMian2{publicstaticvoidmain(String[]args){ListusersList=newArrayList();Usersusers=newUsers();users.setId(1L);users.setName(“张三”);users.setSex(…

    2022年5月16日
    302
  • 运维人员常用到的11款服务器监控工具「建议收藏」

    运维人员常用到的11款服务器监控工具「建议收藏」目录1、zabbix2、Nagios3、PerformanceCo-Pilot4、Anturis5、SeaLion6、Icinga7、Munin8、Monit9、SimpleServerMonitor10、SysUsage11、Pingdom1、zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。abbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决

    2022年5月2日
    43
  • C语言和JAVA的区别[通俗易懂]

    C语言和JAVA的区别[通俗易懂]java语言和c语言的区别:un公司推出的Java是面向对象程序设计语言,其适用于Internet应用的开发,称为网络时代重要的语言之一。Java可以用认为是C的衍生语言,与C在大量元以内成分保持相同,例如此法结构、表达式语句、运算符等与C基本一致:但Java更简洁,没有C中冗余以及容易引起异常的功能成分,并且增加了多线程、异常处理、网络编程等方面的支持功能。本文从多角度对Java与C进行对比分析,为C与Java语言的学习提高一些借鉴。1、调法结构C与Java的词法结构很相似,针对程

    2022年7月7日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号