結果
問題 | No.3093 Safe Infection |
ユーザー |
![]() |
提出日時 | 2025-04-06 16:10:34 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 153 ms / 2,000 ms |
コード長 | 852 bytes |
コンパイル時間 | 4,187 ms |
コンパイル使用メモリ | 255,328 KB |
実行使用メモリ | 9,984 KB |
最終ジャッジ日時 | 2025-04-06 16:10:46 |
合計ジャッジ時間 | 10,468 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 70 |
ソースコード
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using mint = modint1000000007; int main() { int N, M, K; cin >> N >> M >> K; vector<int> A(N); vector<vector<int>> G(N); for(int i = 0; i < N; i++) { cin >> A[i]; } for(int i = 0; i < M; i++) { int u, v; cin >> u >> v; G[u - 1].push_back(v - 1); G[v - 1].push_back(u - 1); } vector<int> P(N); iota(P.begin(), P.end(), 0); sort(P.begin(), P.end(), [&](int i, int j) { return A[i] < A[j]; }); dsu uf(N); for(int i : P) { for(int j : G[i]) { if(A[i] > A[j]) { if(A[uf.leader(i)] - A[uf.leader(j)] > K) { cout << "No" << endl; return 0; } uf.merge(i, j); A[uf.leader(i)] = A[i]; } } } cout << "Yes" << endl; }