题目 题意: 给定n个点、m条边的图,求从st到ed的最短路。记录最短路的路径,如果最短路不止一条,则记录点权和最大的那一条,题目保证该路径唯一。另,输出最短路路径的数量。 思路: Dijkstra,额外维护几个数组即可。 如果dist[j] > dist[u] + w, cnt[j] = cnt[u]. (因为j由u转移过来) 如果dist[j] == dist[u] + w,cnt[j] += cnt[u] (因为j多了从u来的路) 另外,相等时需要判断是否点权和更大,依此来更新。 时间复杂度: O(mlogm) 代码:
#include
using namespace std;
typedef long long ll;
typedef pair PII;
const int N = 502;
struct node{
int v;
int w;
node()
{
}
node(int a,int b)
{
v = a,w = b;
}
};
vector va[N];
int a[N];
int n,m,k,T;
int st,ed;
int pre[N];
int dist[N];
bool vis[N];
int cnt[N];
int sum[N];
void Dij(int st)
{
memset(dist,0x3f,sizeof(dist));
priority_queue q;
q.push({0,st});
cnt[st] = 1;
sum[st] = a[st];
dist[st] = 0;
while(q.size())
{
PII tmp = q.top(); q.pop();
int u = tmp.second;
// cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?