Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 801
- #define INFINITY 10000
- int places[MAX][MAX];
- int dist[MAX];
- int visited[MAX];
- int nodes[MAX];
- int max = 0;
- int max_followers = 0;
- int num;
- int index_f = -1;
- int size = 0;
- void bfs(int index){
- int i;
- visited[index] = 1;
- nodes[size++] = index;
- while(size>0){
- int v = nodes[size];
- size--;
- for(i=1;i<places[v][0]+1;i++){
- if(visited[places[v][i]]==0){
- dist[places[v][i]] = dist[v]+1;
- visited[places[v][i]] = 1;
- nodes[size++] = places[v][i];
- }
- }
- }
- for(i=0;i<num;i++){
- printf("%d\n",dist[i]);
- }
- }
- void input(){
- int i,j,a;
- int aux;
- while(scanf("%d",&num)==1){
- max_followers = 0;
- index_f = -1;
- for(i=0;i<num;i++){
- visited[i] = 0;
- if(i==0)
- dist[i] = 0;
- else
- dist[i] = 1000;
- }
- for(i=0;i<num;i++){
- scanf("%d",&aux);
- if(i==0){
- max = aux;
- }
- if(aux>max){
- max_followers = aux;
- index_f = i;
- }
- places[i][0] = aux;
- for(j=1;j<aux + 1;j++){
- scanf("%d",&a);
- places[i][j]= a-1;
- }
- }
- bfs(0);
- }
- }
- int main(){
- input();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement