結果
| 問題 |
No.92 逃走経路
|
| コンテスト | |
| ユーザー |
aaa
|
| 提出日時 | 2019-05-29 22:56:13 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 2,970 bytes |
| コンパイル時間 | 1,124 ms |
| コンパイル使用メモリ | 112,980 KB |
| 実行使用メモリ | 814,832 KB |
| 最終ジャッジ日時 | 2024-09-17 16:02:24 |
| 合計ジャッジ時間 | 13,588 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 2 |
| other | MLE * 1 -- * 17 |
ソースコード
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <map>
#include <iomanip>
#include <math.h>
#include <stack>
#include <queue>
#include <bitset>
#include <cstdlib>
#include <tuple>
#include <cctype>
#include <ctype.h>
#include <set>
#include <sstream>
#include <time.h>
using namespace std;
//#define int long long
#define rep(i,s,n) for(int i = s;i<n;i++)
#define repe(i,s,n) for(int i = s;i<=n;i++)
#define rrep(i,s,n) for(int i = (n)-1;i>=(s);i--)
#define all(v) (v).begin(),(v).end()
#define pb push_back
#define fi first
#define se second
#define chmin(a,b) a=min((a),(b))
#define chmax(a,b) a=max((a),(b))
#define l1 list[index]
#define l2 list[index - 1]
#define l3 list[index + 1]
#define iif(i,j) ((i<0 && j<0) || (i>0 && j>0)) ? true : false
typedef long long ll;
typedef pair<int, int>pint;
typedef vector<int>vint;
typedef vector<pint>vpint;
typedef pair<pint, int> P1;
typedef pair<int, pint> P2;
typedef pair<pint, pint> PP;
static const ll maxLL = (ll)1 << 62;
const ll MOD = 1000000007;
const ll INF = 1e18;
const double PI = 3.14159265359;
int ca[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
struct MyStruct
{
vector<int>list;
};
int n, m, k, cnt = 0;
map<int, MyStruct>mp;
int klist[2000];
vector<int>anslist;
int func(int index, int no) {
if (index == k) {
cnt++;
anslist.push_back(no);
return 0;
}
bool flag = false;
for (int i = 0; i < mp[klist[index]].list.size(); i++) {
if (mp[klist[index]].list[i] > no) break;
if (mp[klist[index]].list[i] == no) {
flag = true;
break;
}
}
if (flag == false) {
return 0;
}
int size = mp[klist[index]].list.size();
for (int i = 0; i < size; i++) {
int num = mp[klist[index]].list[i];
if (num == no)continue;
/*for (int j = 0; j < size; j++) {
if (i == j)continue;
int num2 = mp[klist[index]].list[j];*/
func(index + 1, num);
//}
}
return 0;
}
signed main() {
cin >> n >> m >> k;
for (int i = 0; i < m; i++) {
int numa, numb, numc;
cin >> numa >> numb >> numc;
if (mp.count(numc) == 0) {
MyStruct st;
st.list.push_back(numa);
st.list.push_back(numb);
mp.insert(make_pair(numc, st));
}
else {
mp[numc].list.push_back(numa);
mp[numc].list.push_back(numb);
}
}
for (auto itr = mp.begin(); itr != mp.end(); itr++) {
sort((*itr).second.list.begin(), (*itr).second.list.end());
}
for (int i = 0; i < k; i++) {
cin >> klist[i];
}
for (int i = 0; i < mp[klist[0]].list.size(); i++) {
func(1, mp[klist[0]].list[i]);
}
sort(anslist.begin(), anslist.end());
cout << anslist.size() << endl;
for (int i = 0; i < anslist.size() - 1; i++) {
if (anslist[i] != anslist[i + 1]) {
cout << anslist[i];
}
else {
continue;
}
//if (i != anslist.size() - 1) {
cout << " ";
//}
}
//cout << endl;
cout << anslist[anslist.size() - 1] << endl;
getchar();
getchar();
return 0;
}
aaa