关注
dijskra, 时间相同时, 优先选蛋糕最多的。 #include <stdio.h>
#include <string.h>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
const int n = 10000 + 10;
const int m = 2000000 + 10;
typedef long long ll;
ll a[n];
struct edge
{
int v;
int next;
ll time;
}e[m];
int head[n];
int cnt = 0;
void add(int u, int v, int t)
{
e[cnt].v = v;
e[cnt].time = t;
e[cnt].next = head[u];
head[u] = cnt++;
}
ll times[n];
ll cakes[n];
struct node
{
int fa;
int u;
ll time;
friend bool operator<(const node &a , const node &b)
{
return a.time>b.time; // ascending sort
}
};
priority_queue<node> q;
void dij(int s, int d)
{
node cur;
memset(cakes, 0, sizeof(cakes));
memset(times, -1, sizeof(times));
for(int i = head[s]; i != -1; i = e[i].next)
{
node tmp;
tmp.fa = s;
tmp.u = e[i].v;
tmp.time = e[i].time;
q.push(tmp);
}
cakes[s] = a[s];
times[s] = 0;
int i = 0;
while(!q.empty())
{
i+=1;
cur = q.top();
q.pop();
//没有走过, 或者有更好的走法
if(times[cur.u] == -1 || cur.time < times[cur.u])
{
times[cur.u] = cur.time;
cakes[cur.u] = cakes[cur.fa] + a[cur.u];
}
// 时间相同,选蛋糕更多的
else if(cur.time == times[cur.u])
{
if(cakes[cur.fa] + a[cur.u] > cakes[cur.u])
cakes[cur.u] = cakes[cur.fa] + a[cur.u];
continue;
}
else
{
continue;
}
/* cout << cur.u << " " << cakes[cur.u] << endl; */
for(int i = head[cur.u]; i != -1; i = e[i].next)
{
if(times[e[i].v] != -1 && cur.time + e[i].time > times[e[i].v])
continue;
node tmp;
tmp.fa = cur.u;
tmp.u = e[i].v;
tmp.time = cur.time + e[i].time;
q.push(tmp);
}
}
cout << times[d] << " " << cakes[d] << endl;
}
int main()
{
int n, m, s, d;
cin >> n >> m >> s >> d;
s--;
d--;
for(int i = 0; i < n; ++i)
{
cin >> a[i];
}
int u, v, t;
memset(head, -1, sizeof(head));
for(int i = 0; i < m; ++i)
{
cin >> u >> v >> t;
u--;
v--;
add(u, v, t);
add(v, u, t);
}
dij(s, d);
}
//6 80
查看原帖
点赞 1
相关推荐
2024-11-12 15:11
门头沟学院 测试工程师 点赞 评论 收藏
分享
牛客热帖
- 1... Java逆袭指南 | 神哥助你一个月拿下大厂offer | 手把手教你准备春招与暑期实习1.9W
- 2... 【26届三段大厂实习】如何成为大老板嫡系的技巧7667
- 3... 12月牛客激励计划贡献作者榜单TOP10揭晓~6410
- 4... 被同学举报实习了,辅导员大半夜给我打视频5154
- 5... 协商离职了,明天lastday3865
- 6... 面试是有技巧的,能救一个是一个3382
- 7... 组里社招到了一个学历造假的2948
- 8... 双非本java选手的秋招总结2716
- 9... 研三了,被军工所卡着不让回家过年2577
- 10... 24届被裁2266
正在热议
# 职场高情商速成班 #
1387次浏览 39人参与
# 分享一个让你热爱工作的瞬间 #
10225次浏览 98人参与
# 被同事甩锅了怎么办 #
13382次浏览 88人参与
# 机械制造薪资爆料 #
1146168次浏览 9392人参与
# lastday知无不言 #
32210次浏览 303人参与
# 我的简历长这样 #
2080019次浏览 28150人参与
# 入职第四天,心情怎么样 #
7241次浏览 33人参与
# 你们的毕业论文什么进度了 #
852679次浏览 8597人参与
# 如何一边实习一边秋招 #
1097057次浏览 13451人参与
# 大家每天通勤多久? #
14224次浏览 115人参与
# 我的岗位说明书 #
118793次浏览 1134人参与
# 我的实习求职记录 #
6489626次浏览 86188人参与
# 面试被问期望薪资时该如何回答 #
187793次浏览 1172人参与
# AI了,我在打一种很新的工 #
31238次浏览 727人参与
# 牛客帮帮团来啦!有问必答 #
2501888次浏览 25141人参与
# 2023年终奖爆料 #
50409次浏览 368人参与
# 签了三方后想毁约怎么办 #
23046次浏览 137人参与
# 面试中的破防瞬间 #
344420次浏览 3787人参与
# 上班苦还是上学苦呢? #
189558次浏览 1133人参与
# 当你面对裁员会如何? #
84179次浏览 854人参与