結果
問題 |
No.92 逃走経路
|
ユーザー |
|
提出日時 | 2025-06-30 06:06:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 9 ms / 5,000 ms |
コード長 | 1,070 bytes |
コンパイル時間 | 2,162 ms |
コンパイル使用メモリ | 208,644 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-30 06:06:46 |
合計ジャッジ時間 | 3,269 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h> using namespace std; template<typename T> istream &operator>>(istream &is,vector<T> &a){ for(auto &v : a) cin >> v; return is; } template<typename T> ostream &operator<<(ostream &os,const vector<T> &a){ if(a.size() == 0) return os; cout << a.at(0); for(int i=1; i<a.size(); i++) cout << " " << a.at(i); cout << "\n"; return os; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,M,K; cin >> N >> M >> K; map<int,vector<pair<int,int>>> Cs; while(M--){ int a,b,c; cin >> a >> b >> c; a--,b--,c--; Cs[c].push_back({a,b}); } vector<bool> OK(N,true); while(K--){ int d; cin >> d; d--; vector<bool> next(N); for(auto [a,b] : Cs[d]){ if(OK.at(b)) next.at(a) = true; if(OK.at(a)) next.at(b) = true; } swap(OK,next); } int ok = 0; for(int i=0; i<N; i++) ok += OK.at(i); cout << ok << "\n"; for(int i=0; i<N; i++) if(OK.at(i)) cout << i+1 << (ok==1?"\n":" "),ok--; }