Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int n, k;
- vector<int> id[305];
- bool seen[305] = { };
- void dfs(int v)
- {
- seen[v] = true;
- for(int i = 1; i <= n; i++)
- {
- if(!seen[i])
- {
- int l = 0, r = 0, common = 0;
- while(l < id[v].size() && r < id[i].size())
- {
- if(id[v][l] == id[i][r])
- {
- l++;
- r++;
- common++;
- if(common == k)
- {
- dfs(i);
- break;
- }
- }
- else if(id[v][l] > id[i][r])
- {
- r++;
- }
- else
- {
- l++;
- }
- }
- }
- }
- }
- int main()
- {
- cin >> n >> k;
- for(int i = 1; i <= n; i++)
- {
- int p;
- cin >> p;
- for(int j = 0; j < p; j++)
- {
- int x;
- cin >> x;
- id[i].push_back(x);
- }
- sort(id[i].begin(), id[i].end());
- }
- dfs(1);
- int ans = 0;
- for(int i = 1; i <= n; i++) if(seen[i]) ans++;
- cout << ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement