首页 > 其他分享 >pta 1003

pta 1003

时间:2022-09-25 19:01:20浏览次数:38  
标签:const cout int pta dijkstra num 1003

https://pintia.cn/problem-sets/994805342720868352/problems/994805523835109376

朴素dijkstra+pre记录前驱+dfs输出前驱

朴素dijkstra,升级版是天梯赛l2-1紧急救援

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 #define int long long
  4 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  5 const int N=5e2+10;
  6 const int INF=0x3f3f3f3f;
  7 int g[N][N];
  8 int p[N];
  9 bool vis[N];
 10 int w[N];
 11 int num[N];
 12 int n,m;
 13 int s,t;
 14 int dis[N];
 15 void dijkstra()
 16 {
 17     for(int i=0;i<N;i++)
 18     {
 19         dis[i]=INF;
 20         w[i]=0;
 21         num[i]=0;
 22     }
 23     dis[s]=0;
 24     num[s]=1;
 25     w[s]=p[s];
 26     for(int i=0;i<n;i++)
 27     {
 28         int u=-1;
 29         int minn=INF;
 30         for(int j=0;j<n;j++)
 31         {
 32             if(!vis[j]&&dis[j]<minn)
 33             {
 34                 u=j;
 35                 minn=dis[j];
 36             }
 37         }
 38         vis[u]=true;
 39         for(int v=0;v<n;v++)
 40         {
 41             /*if(!vis[v]&&g[u][v]!=INF)
 42             {
 43                 if(dis[u]+g[u][v]<dis[v])
 44                 {
 45                     dis[v]=dis[u]+g[u][v];
 46                     num[v]=num[u];
 47                     w[v]=w[u]+p[v];
 48                 }
 49                 else if(dis[u]+g[u][v]==dis[v])
 50                 {
 51                     if(w[u]+p[v]>w[v])
 52                     {
 53                         w[v]=w[u]+p[v];
 54                     }
 55                     num[v]+=num[u];
 56                 }
 57             }*/
 58             if(!vis[v]&&!g[u][v]!=INF)
 59             {
 60                 if(dis[u]+g[u][v]<dis[v])
 61                 {
 62                     dis[v]=dis[u]+g[u][v];
 63                     num[v]=num[u];
 64                     w[v]=w[u]+p[v];
 65                 }
 66                 else if(dis[u]+g[u][v]==dis[v])
 67                 {
 68                     if(w[u]+p[v]>w[v])
 69                     {
 70                         w[v]=p[v]+w[u];
 71                     }
 72                     num[v]+=num[u];
 73                 }
 74             }
 75         }
 76     }
 77 }
 78 signed main()
 79 {
 80     IOS;
 81     cin>>n>>m>>s>>t;
 82     for(int i=0;i<n;i++)
 83     {
 84         cin>>p[i];
 85     }
 86     for(int i=0;i<N;i++)
 87     {
 88         for(int j=0;j<N;j++)
 89         {
 90             g[i][j]=INF;
 91         }
 92     }
 93     for(int i=0;i<m;i++)
 94     {
 95         int u,v,w;
 96         cin>>u>>v>>w;
 97         g[u][v]=w;
 98         g[v][u]=w;
 99     }
100     dijkstra();
101     cout<<num[t]<<" "<<w[t];
102     return 0;
103 }

 

标签:const,cout,int,pta,dijkstra,num,1003
From: https://www.cnblogs.com/LQS-blog/p/16728480.html

相关文章

  • ★★★PAT 1003 我要通过!Python
    ★★★PAT1003我要通过!Python题号:PATbasiclevel1003引文链接PAT-1003猫猫虫(——)-思路:正则匹配+数学归纳crayonJJ-注释补充:正则匹配菜鸟教程-Python正则表......
  • iptables中limit 和 limit-burst 说明
    Limitmatch    这个匹配操作必须由-mlimit明确指定才能使用。有了他的帮助,就能对指定的规则的日志数量加以限制,以免你被信息的洪流淹没哦。比如,你能事先设定一个限定......
  • PAT (Advanced Level) Practice 1003 Emergency 分数 25
    Asanemergencyrescueteamleaderofacity,youaregivenaspecialmapofyourcountry.Themapshowsseveralscatteredcitiesconnectedbysomeroads.A......
  • ipop使用ftp服务的时候,出现permmisson denied错误#1003
    1.在使用ipop的ftp服务时,突然报错:  解决办法:查看自己的电脑是否有开启其他的ftp服务器占用了端口10013;如我开启了本机iis服务里面的ftp服务器:  关闭后,开启成功:......
  • 导出excel数据报错Could not find acceptable representation
    org.springframework.web.HttpMediaTypeNotAcceptableException:Couldnotfindacceptablerepresentation 在导出excel数据时,返回的数据时文件流的格式,写入到response......
  • OptaPlanner 简介
    1.什么是OptaPlanner?每个组织都面临规划问题:以有限的资源(员工、资产、时间和金钱)提供产品或服务。OptaPlanner优化此类计划以用更少的资源开展......
  • iptalbes 打开端口
    /sbin/iptables-IINPUT-ptcp--dport8080-jACCEPT#打开8080端口iptables-L-n--line-number#列出链所有的规则参考:https://www.cnblogs.com/mustark/p/1118......
  • T1003: 对齐输出(信息学一本通C++)
    [题目描述]读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。[输入]只有一行,按照格式要求依次输出三个整数,之间......
  • Iptables - 基础应用
     iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。-t<表>:指定要操纵的表;-A:向规则链中添加条目;-D:从规则链中删除条目;-I:向规则链中插入条目;-R:......
  • 关于eclipse(64位)下aptana插件安装报错问题解决
    关于eclipse(64位)下aptana插件安装报错问题解决_z1m2爱的博客-CSDN博客 https://blog.csdn.net/zoumin123456/article/details/48285589最近一直没有写过js,换了新电脑以......