結果
問題 |
No.3103 Butterfly Effect
|
ユーザー |
![]() |
提出日時 | 2025-02-12 01:58:04 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,108 bytes |
コンパイル時間 | 1,789 ms |
コンパイル使用メモリ | 206,216 KB |
実行使用メモリ | 65,476 KB |
最終ジャッジ日時 | 2025-02-12 03:16:30 |
合計ジャッジ時間 | 16,549 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 15 WA * 32 |
ソースコード
// これは WA だと思う #include<bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, q; cin >> n >> q; vector<int> dp(n, q+1); dp[0] = -1; vector<set<pair<int,int>>> horyu(n); int ans = 1; for (int num=0; num<q; num++) { int p; cin >> p; p--; int x, y; cin >> x >> y; x--; y--; if (dp[x] < p && dp[y] < p) { }else if (dp[x] > p && dp[y] > p) { horyu[x].insert(pair(p,y)); horyu[y].insert(pair(p,x)); }else{ if (dp[y] < p) { swap(x, y); } assert(dp[x] < p && dp[y] > p); if (dp[y] == q+1) ans++; dp[y] = p; vector<pair<int,int>> mada; mada.push_back(pair(p,y)); while (!mada.empty()) { auto [t,i] = mada.back(); mada.pop_back(); if (dp[i] > t) continue; while (!horyu[y].empty()) { auto itr = horyu[y].end(); itr--; int tim = (*itr).first; int z = (*itr).second; horyu[y].erase(itr); if (dp[z] > tim) { if (dp[z] == q+1) ans++; dp[z] = tim; mada.push_back(pair(tim,z)); } } } } cout << ans << '\n'; } }