fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. vector<vector<long long>>adj;
  5. vector<bool>visited;
  6. vector<ll>dists;
  7. void dfs(ll n){
  8.  
  9. visited[n]=1;
  10. for(ll&a:adj[n]){
  11. if(!visited[a]){
  12. visited[a]=1;
  13. dists[a]=dists[n]+1;
  14. dfs(a);
  15. }
  16. }
  17. }
  18.  
  19. int main() {
  20. ios::sync_with_stdio(false);
  21. cin.tie(nullptr);
  22.  
  23. int n,m;
  24. cin>> n>>m;
  25. visited.assign(n+1,0);
  26. dists.assign(n+1,0);
  27. adj.resize(n+1);
  28. for(int i=0;i<m;i++){
  29. int q;
  30. cin>>q;
  31. if(q==1){
  32. int x;
  33. cin>>x;
  34. dfs(1);
  35. if(dists[x]==0){
  36. if(x==1){
  37. cout<<0<<"\n";
  38. }
  39. else cout<<-1<<"\n";
  40. }
  41. else{
  42. cout<<dists[x]<<"\n";
  43. }
  44. }
  45. else {
  46. int x,y;
  47. cin>>x>>y;
  48. adj[x].push_back(y);
  49. adj[y].push_back(x);
  50. }
  51. }
  52. return 0;
  53. }
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
Standard output is empty