#pragma GCC optimize(2) #include #define all(n) (n).begin(), (n).end() #define se second #define fi first #define pb emplace_back #define mp make_pair #define sqr(n) ((n)*(n)) #define rep(i, a, b) for (int i = (a); i <= (b); ++i) #define per(i, a, b) for (int i = (a); i >= (b); --i) #define precision(a) setiosflags(ios::fixed) << setprecision(a) #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair PII; typedef pair PLL; typedef vector VI; typedef vector VL; typedef double db; template inline char read(T& x) { x = 0; T fg = 1; char ch = getchar(); while (!isdigit(ch)) { if (ch == '-') fg = -1; ch = getchar(); } while (isdigit(ch)) x = (x << 3) + (x << 1) + (ch ^ '0'), ch = getchar(); x = fg * x; return ch; } template inline void read(T& x, Args &... args) { read(x), read(args...); } template inline void write(T x) { int len = 0; char c[40]; if (x < 0) putchar('-'), x = -x; do { ++len; c[len] = x % 10 + '0'; } while (x /= 10); for (int i = len; i >= 1; i--) putchar(c[i]); } template inline void write(T& x, Args &... args) { write(x), write(args...); } template bool umin(T1& a, T2 b) { return a > b ? (a = b, true) : false; } template bool umax(T1& a, T2 b) { return a < b ? (a = b, true) : false; } template void clear(T& a) { T().swap(a); } const int N = 1e5 + 5; int n, m, _, k, cas; int ans[N]; int main() { IOS; for (cin >> _; _; --_) { cin >> n >> m >> k; for (int i = 1; i <= n; ++i) ans[i] = INT_MAX; ans[k] = 0; for (int i = 1; i <= m; ++i) { int fr, to; cin >> fr >> to; if (ans[fr] == INT_MAX && ans[to] == INT_MAX) continue; int ansfr = ans[fr], ansto = ans[to]; if (ansto != INT_MAX) ++ans[to]; if (ansfr != INT_MAX) ++ans[fr]; if (ansto != INT_MAX) { if (ansfr != INT_MAX) ans[fr] = min(ansfr + 1, ansto); else ans[fr] = ansto; } if (ansfr != INT_MAX) { if (ans[to] != INT_MAX) ans[to] = min(ansto + 1, ansfr); else ans[to] = ansfr; } } for (int i = 1; i <= n; ++i) cout << (ans[i] == INT_MAX ? -1 : ans[i]) << char(" \n"[i == n]); } return 0; }