#include using namespace std; const int MAXN = 1005; vector adj[MAXN]; // ?????? int dist[MAXN]; // ???? bool visited[MAXN]; // ?????? void bfs(int start, int n) { // ??????? for (int i = 1; i <= n; i++) { dist[i] = -1; visited[i] = false; } // BFS??? queue q; dist[start] = 0; visited[start] = true; q.push(start); while (!q.empty()) { int u = q.front(); q.pop(); // ??????????? for (int v : adj[u]) { if (!visited[v]) { visited[v] = true; dist[v] = dist[u] + 1; q.push(v); } } } } int main() { int n, m; cin >> n >> m; // ??? for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; adj[u].push_back(v); } // BFS???1????????????? bfs(1, n); // ???? for (int i = 2; i <= n; i++) { cout << dist[i] << endl; } return 0; }