当前位置:网站首页>1003 emergency (25 points), "DIJ deformation"
1003 emergency (25 points), "DIJ deformation"
2022-07-06 02:54:00 【Yang tree Yang tree】
#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#define dd double
#define PII pair<int,int>
#define int long long
using namespace std;
const dd eps = 1e-6;
const int mod = 1000003;
const int N = 1e3+10;
int n,m;
int c1,c2;
int cnt[N],sum[N];
int weight[N];
// cnt[j] Deposit is j The number of shortest circuits to the starting point .
// sum[j] Deposit is j The largest number of people on the shortest path to the starting point
/*
n - Number of cities
m - The number of roads
c1 and c2 Cities that must be rescued
*/
//#define int long long
const int INF = 0x3f3f3f3f3f3f3f3f;
int g[N][N], dist[N]; // Dense graphs are stored in adjacency matrices
bool st[N];
void dijkstra()
{
// The starting point is initialized to 0, Other points are initialized to infinity (INF)
memset(dist, 0x3f, sizeof dist);
dist[c1] = 0;
// The starting quantity is 1
cnt[c1]=1;
// Starting number is w1
sum[c1]=weight[c1];
for(int i = 1; i <= n; i++)
{
// Find the point in which the shortest circuit is not currently determined The shortest distance
int t = -1;
for(int j = 0; j < n; j++)
if(!st[j] && (t == -1 || dist[t] > dist[j])) t = j;
// use t Update other points
for(int j = 0; j < n; j++)
{
if(dist[j]>dist[t]+g[t][j])
{
dist[j]=dist[t]+g[t][j];
cnt[j]=cnt[t];
sum[j]=sum[t]+weight[j];
}
else if(dist[j]==dist[t]+g[t][j])
{
cnt[j]+=cnt[t];
sum[j]=max(sum[j],sum[t]+weight[j]);
}
}
// t The shortest circuit has been determined
st[t] = true;
}
// if INF It means there is no way
}
signed main()
{
// Input part
memset(g,0x3f,sizeof(g));
cin>>n>>m>>c1>>c2;
for(int i=0;i<n;i++)
{
cin>>weight[i];
}
for(int i=0;i<m;i++)
{
int a,b,c;
cin>>a>>b>>c;
g[a][b]=g[b][a]=min(g[a][b],c);
}
dijkstra();
cout<<cnt[c2]<<" "<<sum[c2]<<endl;
return 0;
//
}
边栏推荐
- What is the investment value of iFLYTEK, which does not make money?
- C语言sizeof和strlen的区别
- ERA5再分析资料下载攻略
- Modeling specifications: naming conventions
- 故障分析 | MySQL 耗尽主机内存一例分析
- Network Security Learning - Web vulnerabilities (Part 1)
- [kubernetes series] learn the exposed application of kubernetes service security
- Rust language -- iterators and closures
- Follow the mouse's angle and keyboard events
- Summary of Bible story reading
猜你喜欢
Microservice registration and discovery
微软语音合成助手 v1.3 文本转语音工具,真实语音AI生成器
Maturity of master data management (MDM)
Gifcam v7.0 minimalist GIF animation recording tool Chinese single file version
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 9
[pointer training - eight questions]
[Digital IC manual tearing code] Verilog asynchronous reset synchronous release | topic | principle | design | simulation
【若依(ruoyi)】设置主题样式
Deeply analyze the chain 2+1 mode, and subvert the traditional thinking of selling goods?
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 8
随机推荐
原型图设计
codeforces每日5题(均1700)-第六天
Li Kou today's question -729 My schedule I
Follow the mouse's angle and keyboard events
Zhang Lijun: penetrating uncertainty depends on four "invariants"
技术分享 | undo 太大了怎么办
一个复制也能玩出花来
codeforces每日5題(均1700)-第六天
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 8
1. Dynamic parameters of function: *args, **kwargs
Universal crud interface
CSP date calculation
Microservice registration and discovery
【Unity3D】GUI控件
RobotFramework入门(一)简要介绍及使用
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 17
How to read excel, PDF and JSON files in R language?
07 单件(Singleton)模式
Data and Introspection__ dict__ Attributes and__ slots__ attribute
Prototype design