社区讨论
19分求助
P1938[USACO09NOV] Job Hunt S参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhja46n8
- 此快照首次捕获于
- 2025/11/03 23:12 4 个月前
- 此快照最后确认于
- 2025/11/03 23:12 4 个月前
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10;
int d, p, c, f, s;
struct node{
int v, w;
friend bool operator<(node a, node b){
return a.w < b.w;
}
};
vector<node> g[N];
int dis[N];
bool vis[N];
priority_queue<node> q;
void dijkstra(int s){
memset(dis, -0x3f3f3f3f, sizeof dis);
dis[s] = d;
q.push({s, d});
for(int i = 1; i <= c; i++){
int p = -1;
while(!q.empty()){
int v = q.top().v;
//cout << v << endl;
q.pop();
if(!vis[v]){
p = v;
break;
}
}
if(p == -1) return;
vis[p] = true;
for(auto j : g[p]){
int v = j.v;
int w = j.w;
if(!vis[v] && dis[p] + w > dis[v]){
dis[v] = dis[p] + w;
q.push({v, dis[p] + w});
}
}
}
}
signed main(){
cin >> d >> p >> c >> f >> s;
for(int i = 1, a, b; i <= p; i++){
cin >> a >> b;
g[a].push_back({b, d});
}
for(int i = 1, u, v, w; i <= f; i++){
cin >> u >> v >> w;
g[u].push_back({v, -w + d});
}
dijkstra(s);
int ans = -0x3f3f3f3f;
for(int i = 1; i <= c; i++){
ans = max(ans, dis[i]);
}
cout << ans << endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...