fork download
  1. #include <bits/stdc++.h>
  2. #define my_angel QuynhNhu
  3. //#define int long long
  4. #define ll long long
  5. #define ull unsigned long long
  6. #define fi first
  7. #define se second
  8. #define endl "\n"
  9. #define float double
  10. #define ii pair<int,int>
  11. #define all(a) (a).begin(), (a).end()
  12.  
  13. using namespace std;
  14.  
  15. const int N = 1e5 + 5;
  16. const int mod = 1e9 + 7;
  17. const int base = 1301;
  18.  
  19. int n, q, d[N];
  20. vector<int> adj[N];
  21.  
  22. void add(int u, int v){
  23. adj[u].push_back(v);
  24. if (d[u] + 1 < d[v]){
  25. d[v] = d[u] + 1;
  26. queue<int> q;
  27. q.push(v);
  28. while (q.size()){
  29. int u = q.front(); q.pop();
  30. for (int v : adj[u]){
  31. if (d[u] + 1 < d[v]){
  32. d[v] = d[u] + 1;
  33. q.push(v);
  34. }
  35. }
  36. }
  37. }
  38. }
  39.  
  40. signed main(){
  41. cin.tie(0) -> sync_with_stdio(false);
  42.  
  43. if (fopen( "input.inp" , "r" )){
  44. freopen( "input.inp" , "r" , stdin );
  45. freopen( "output.out" , "w" , stdout );
  46. }
  47.  
  48. cin >> n >> q;
  49. for (int i = 2; i <= n; ++i) d[i] = 1e9;
  50.  
  51. while (q--){
  52. int t; cin >> t;
  53. if (t == 0){
  54. int u, v; cin >> u >> v;
  55. add(u, v);
  56. }
  57. else {
  58. int u; cin >> u;
  59. if (d[u] == 1e9) cout << -1 << endl;
  60. else cout << d[u] << endl;
  61. }
  62. }
  63.  
  64. return 0;
  65. }
  66.  
Success #stdin #stdout 0.01s 5904KB
stdin
Standard input is empty
stdout
Standard output is empty