# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1130910 | yellowtoad | Railway (BOI17_railway) | C++17 | 0 ms | 0 KiB |
//testing
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k;
vector<pair<int, int>> tracks(n - 1);
unordered_map<pair<int, int>, int, boost::hash<pair<int, int>>> track_count;
for (int i = 0; i < n - 1; ++i) {
int a, b;
cin >> a >> b;
if (a > b) swap(a, b);
tracks[i] = {a, b};
}
for (int i = 0; i < m; ++i) {
int si;
cin >> si;
vector<int> neighborhoods(si);
for (int j = 0; j < si; ++j) {
cin >> neighborhoods[j];
}
for (int j = 0; j < si; ++j) {
for (int l = j + 1; l < si; ++l) {
int a = neighborhoods[j];
int b = neighborhoods[l];
if (a > b) swap(a, b);
track_count[{a, b}]++;
}
}
}
vector<int> result;
for (int i = 0; i < n - 1; ++i) {
int a = tracks[i].first;
int b = tracks[i].second;
if (track_count[{a, b}] >= k) {
result.push_back(i + 1);
}
}
cout << result.size() << endl;
for (int id : result) {
cout << id << " ";
}
cout << endl;
return 0;
}