Submission

Status:

[PPPPP-SSSS][-SSSSSSSSSSSSSSS]

Subtask/Task Score:

{0/30}{0/70}

Score: 0

User: aorta

Problemset: 03.Looper

Language: cpp

Time: 0.002 second

Submitted On: 2025-05-31 17:02:16

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MxN = 1010;

vector<int> adj[MxN];
queue<int> q;
int dist[MxN];

inline void solve() {
  int n, m, k, s;
  cin >> n >> m >> k >> s;
  for(int i=1, u, v; i<=m; ++i) {
    cin >> u >> v;
    adj[u].emplace_back(v);
  }
  memset(dist, -1, sizeof dist);
  q.emplace(s);
  dist[s] = 0;
  while(!q.empty()) {
    int u = q.front(); q.pop();
    for(auto v: adj[u]) {
      if(dist[v] != -1) {
        continue;
      }
      q.emplace(v);
      dist[v] = dist[u] + 1;
    }
  }
  if(dist[s] != -1) {
    cout << 0 << " "<< s << "\n";
  }
  for(int i=1; i<=n; ++i) {
    adj[i].clear();
  }
  return ;
}

signed main(int argc, char *argv[]) {
  cin.tie(nullptr)->ios::sync_with_stdio(false);
  int q;
  cin >> q;
  while(q--) {
    solve();
  }
  return 0;
}