Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<int> g[10010];
- int gr[10010];
- vector<int > memberInGroup[10010];
- void dfs(int u,int num){
- if(gr[u]) return ;
- gr[u] = num;
- memberInGroup[num].push_back(u);
- for(auto x:g[u]){
- dfs(x,num);
- }
- }
- int main()
- {
- cin.tie(0)->sync_with_stdio(0);
- cin.exceptions(cin.failbit);
- int n, m, q, u, v, mark, st, en;
- cin >> n >> m >> q;
- while (m--)
- {
- cin >> u >> v >> mark;
- if (mark)
- {
- g[u].push_back(v);
- g[v].push_back(u);
- }
- }
- for(int i=1;i<=n;i++)
- dfs(i,i);
- for(int i=1;i<=n;i++)
- sort(memberInGroup[i].begin(),memberInGroup[i].end());
- while (q--)
- {
- cin >> st >> en;
- if(gr[st] == gr[en]){
- cout << "1 " << en << '\n';
- continue;
- }
- cout << "0 ";
- if(memberInGroup[st][0] != st) cout << memberInGroup[st][0] << '\n';
- else if(memberInGroup[st][0] == st){
- if(memberInGroup[st].size() > 1) cout << memberInGroup[st][1] << '\n';
- else cout << "-1\n";
- }
- }
- return 0;
- }
- /*
- 3 2 3
- 1 2 1
- 2 3 0
- 1 3
- 1 2
- 3 2
- */
Advertisement
Add Comment
Please, Sign In to add comment