关注
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
相关推荐
点赞 评论 收藏
分享
查看8道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
- 1... AI Agent 面试 Top50 必刷题3.1W
- 2... 看不懂组内文档,实习怎么偷产出?6758
- 3... 要对实习同事表白吗?5361
- 4... 实习dirty work,怎么包装产出5316
- 5... 解决了xd们,发了个dy曝光视频,十几万播放,直接让他火速联系我,赔我路费了,兄弟们碰到不公平的违法行为,一定要积极捍卫自己权益5291
- 6... 五月了,感觉实习很难找了4992
- 7... 逆天操作,也是让我遇到了3512
- 8... 实习一个星期,我因为只加了20分钟班被开除了3355
- 9... 26届双非本求职总结3275
- 10... 每日面试题-5月20日3154
正在热议
更多
# 26届春招投递记录 #
34777次浏览 285人参与
# 你今年的平均薪资是多少? #
229662次浏览 1063人参与
# 27届实习投递记录 #
118924次浏览 1358人参与
# 要毕业了,再不说就来不及了 #
7987次浏览 141人参与
# 如何成为1个AI工程师? #
5305次浏览 266人参与
# 硬件人的简历怎么写 #
349517次浏览 3141人参与
# 机械人的秋招小目标 #
32894次浏览 251人参与
# 你觉得机械有必要实习吗 #
88942次浏览 536人参与
# 面试被问第一学历差时该怎么回答 #
296869次浏览 2306人参与
# 哪些公司校招卡第一学历 #
262155次浏览 879人参与
# 提名点击就挂的公司 #
146570次浏览 494人参与
# 秋招想进国企该如何准备 #
150444次浏览 693人参与
# AI面会问哪些问题? #
135947次浏览 3597人参与
# 我想象的实习vs现实的实习 #
340535次浏览 2311人参与
# 我与AI的日常 #
11186次浏览 219人参与
# 听到哪句话就代表面试稳了or挂了? #
271194次浏览 1732人参与
# 微派笔试 #
2686次浏览 23人参与
# 大学四年该怎么过,才不算浪费时间? #
25928次浏览 111人参与
# 我的工作日记 #
208577次浏览 1837人参与
# 你在职场上见过哪些“水货”同事 #
41884次浏览 177人参与

