Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
37577 申东铉 【S】T2 C++ 解答错误 10 935 MS 42536 KB 1914 2025-04-06 16:13:33

Tests(23/28):


#include <bits/stdc++.h> #include <ios> #define int long long using namespace std; int n,m,k; int s[100005],g[100005],dis[100005]; bool bs[100005],b[100005],vis[100005]; int ans[100005]; vector <pair <int,int>> e[100005]; inline void dij () { priority_queue<pair <int,int>> q; for (int i = 1;i <= n;++i) { if (b[i]) { dis[i] = 1e18; vis[i] = 0; } else { dis[i] = 0; q.push(make_pair(0,i)); vis[i] = 1; } } while (!q.empty()) { int u = q.top().second; q.pop(); for (auto [v,w] : e[u]) { if (b[v]) { ans[v] = min(ans[v],dis[u] + w); } if (dis[v] > dis[u] + w) { dis[v] = dis[u] + w; if (!vis[v]) { vis[v] = 1; q.push(make_pair(-dis[v],v)); } } } } return; } signed main () { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> k; for (int i = 1;i <= k;++i) { cin >> s[i]; bs[s[i]] = 1; } for (int i = 1;i <= m;++i) { int u,v,w; cin >> u >> v >> w; e[v].push_back(make_pair(u,w)); } for (int i = 1;i <= n;++i) { ans[i] = 1e18; } for (int i = 1;i <= n;i <<= 1) { for (int j = 1;j <= n;++j) { if ((i & j) && bs[j]) { b[j] = 0; } else { b[j] = 1; } } dij(); for (int j = 1;j <= n;++j) { if (!(i & j) && bs[j]) { b[j] = 0; } else { b[j] = 1; } } dij(); } for (int i = 1;i <= n;++i) { cin >> g[i]; } for (int i = 1;i <= n;++i) { cout << ans[i] * g[i] << ' '; } return 0; }


测评信息: