結果
問題 | No.92 逃走経路 |
ユーザー |
![]() |
提出日時 | 2015-09-02 11:11:12 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 32 ms / 5,000 ms |
コード長 | 1,832 bytes |
コンパイル時間 | 840 ms |
コンパイル使用メモリ | 85,440 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-18 17:48:56 |
合計ジャッジ時間 | 1,635 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include <iostream>#include <vector>#include <string>#include <cstring>#include <algorithm>#include <sstream>#include <map>#include <set>#define REP(i,k,n) for(int i=k;i<n;i++)#define rep(i,n) for(int i=0;i<n;i++)#define INF 1<<30#define pb push_back#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int,int> P;struct edge {int from,to;int cost;edge(int t,int c) : to(t),cost(c) {}edge(int f,int t,int c) : from(f),to(t),cost(c) {}bool operator<(const edge &e) const {return cost < e.cost;}};vector<edge> G[105];vector<int> v;int n,m,k;int main() {cin >> n >> m >> k;map<int,vector<edge> > edges;rep(i,m) {int a,b,c;cin >> a >> b >> c;a--;b--;G[a].push_back(edge(b,c));G[b].push_back(edge(a,c));edges[c].push_back(edge(a,b,c));edges[c].push_back(edge(b,a,c));}v.resize(k);rep(i,k) cin >> v[i];vector<int> ans(n);rep(i,n) ans[i] = i;rep(i,k) {bool used[105];memset(used,0,sizeof(used));rep(j,ans.size()) {used[ans[j]] = true;}vector<edge> es = edges[v[i]];vector<int> temp;rep(j,es.size()) {int f = es[j].from;int t = es[j].to;if(used[f]) {temp.push_back(t);}}sort(temp.begin(),temp.end());temp.erase(unique(temp.begin(),temp.end()),temp.end());ans.resize(temp.size());rep(j,temp.size()) ans[j] = temp[j];}sort(ans.begin(),ans.end());cout << ans.size() << endl;rep(i,ans.size()) {cout << ans[i] + 1;if(i == ans.size()-1) cout << endl;else cout << " ";}return 0;}