結果
問題 |
No.92 逃走経路
|
ユーザー |
|
提出日時 | 2016-04-17 21:18:14 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,201 bytes |
コンパイル時間 | 918 ms |
コンパイル使用メモリ | 86,836 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-04 10:30:14 |
合計ジャッジ時間 | 1,789 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 7 WA * 11 |
ソースコード
#include <iostream> #include <vector> #include <utility> #include <queue> #include <algorithm> #define SHOW(d) {std::cout<<#d<<"\t:"<<d<<"\n";} #define SHOWTOWN(t) {\ for(size_t i=0;i<t.size();++i){\ std::cout<<i<<":\n";\ for(size_t j=0;j<t[i].size();++j){\ std::cout<<"\t("<<t[i][j].first<<", "<<t[i][j].second<<")\n";\ }\ }\ } #define SHOWQUEUE(a) {\ auto t = a.front();\ std::queue<decltype(t)> tmp(a);\ std::cout << #a << "\t:";\ for(size_t i=0; i<a.size(); ++i){\ std::cout << tmp.front() << " ";\ tmp.pop();\ }\ std::cout << "\n";\ } class Comp{ private: int mValue; public: Comp(int v) : mValue(v){} bool operator()(const std::pair<int, int>& t) const{ return mValue==t.second; } }; int main(){ std::ios::sync_with_stdio(false); std::cin.tie(0); int n, m, k; std::cin >> n >> m >> k; std::vector<std::vector<std::pair<int, int>>> town(n); for(int i=0; i<m; ++i){ int a, b, c; std::cin >> a >> b >> c; town[a-1].push_back(std::make_pair(b-1, c)); town[b-1].push_back(std::make_pair(a-1, c)); } //SHOWTOWN(town); std::queue<int> searchQueue; for(int i=0; i<n; ++i){ searchQueue.push(i); } for(int i=0; i<k; ++i){ int d; std::cin >> d; int queueSize = searchQueue.size(); for(int j=0; j<queueSize; ++j){ int searchNum = searchQueue.front(); std::vector<std::pair<int, int>> t(town[searchNum]); searchQueue.pop(); auto it = std::find_if(t.begin(), t.end(), Comp(d)); if(it!=t.end()){ searchQueue.push(it->first); } } //SHOW(i); //SHOWQUEUE(searchQueue); } int searchQueueNum = searchQueue.size(); std::vector<int> ans(searchQueueNum); for(int i=0; i<searchQueueNum; ++i){ ans[i]=searchQueue.front(); searchQueue.pop(); } std::sort(ans.begin(), ans.end()); std::cout << searchQueueNum << "\n"; for(auto i : ans){ std::cout << i+1 << " "; } std::cout << "\n"; return 0; }