int cnt[N], sum[N], pre[N]; // cnt表示最短路径的条数, sum表示当前路径的救援队数目, pre存储该点的前置节点 void dijkstra(){ fill(dist, dist + N, INF); // 初始化 最短距离为0 最短路径数1 救援队数为出发城市的救援队数, 前置节点置为本身 dist[s] = 0, cnt[s] = 1, sum[s]...
L2-001 紧急救援 题意:就是给你一张n<500的图;让你求最短路径,最短路条数,以及路径; 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值; 一般dfs不就可以解决这个问题吗,像n皇后求次数,注意回溯即可; 那如何dfs确定这条路是最短路径呢?
如果w[v]+a[e.to]>w[e.to],那么w[e.to]=w[v]+a[e.to],因为要保证救援队数量最多 另外每当连路径的时候记得把pre数组录入一下,最后递归输出即可 1#include <bits/stdc++.h>2usingnamespacestd;3constintinf=1<<30;4typedeflonglongll;5typedef pair<int,int>P;6constdoublepi=acos(-1);7const...
输入格式: 输入第一行给出4个正整数N、M、S、D,其中N(2)是城市的个数,顺便假设城市的编号为0 ~(;M是快速道路的条数;S是出发地的城市编号;D是目的地的城市编号。 第二行给出N个正整数,其中第i个数是第i个城市的救援队的数目,数字间以空格分隔。随后的M行中,每行给出一条快速道路的信息,分别是:城...
PTA天梯赛-练习集 L2-001 紧急救援(dijk + dfs),题目给出的图不光路径有权值,每个点也有权值,让求最短路径的个数,及最短路径中经过点的权值和最大的最优路径,输出最短
PTA-L2-001紧急救援(dfs + dijkstra) 题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 思路:先求最短路,再用dfs搜点; 1#include<iostream>2#include<algorithm>3#include<cmath>4#include<cstring>5#include<string>6#include<vector>7#include8#include<queue>9#defineinf...
L2-001 紧急救援 题解:因为没有负边权,所以我使用的是最优化的优先队列dijkstra算法。设num[i]表示到达i点最短路的路径数量,sum[i]表示到达i点最短路的时候的最大权值和。当d[v]>d[u]+edge[i].w时,更新d[v]值,同时num[v]=num[u] . sum[v]=sum[u]+a[v]。如果d[v]=d[u]+edge[i].w时...
给定一个带整数键值的链表L,你需要把其中绝对值重复的键值结点删掉。即对每个键值K,只有第一个绝对值等于K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805072641245184 第一次做链表题,有时间多看看 1#include <bits/stdc++.h>2usingnamespacestd;3constintinf=1<<30;4typedeflonglongll;5typedef pair<int,int>P;6constdoublepi=acos(-1);7constintmod=1e8+7;8constintmaxn=1e5+7;...
L2-001 紧急救援(25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上...