#include <stdlib.h> #include <stdio.h> #include <string.h> #define N 5 #define BACKSPACE() \ {putchar(8); putchar(32); putchar(10);} int next_adj(int matrix[][N],int v,int u) { int i; if(NULL == matrix) return ; for(i = u + 1; i < N; i ++) if(matrix[v][i]) return i; return -1; } int first_adj(int matrix[][N],int v) { int i; if (NULL == matrix ) return -1; for(i = 0; i < N; i ++) if(matrix[v][i]) return i; return -1; } void DFS(int matrix[][N],int v,int visited[]) { int u; if(visited[v]) return ; printf(" V%d,",v); visited[v] = 1; u = first_adj(matrix,v); while(u >= 0) { DFS(matrix,u,visited); u = next_adj(matrix,v,u); } return ; } int main() { int matrix[N][N] = {0}; int visited[N] = {0}; int v1 = -1, v2 = -1; while(1) { while(2 != scanf("%d,%d",&v1,&v2)) getchar(); if(v1 < 0 || v1 >= N || v2 < 0 || v1 >= N) continue; if(v1 == v2) break; matrix[v1][v2] = matrix[v2][v1] = 1; } for(v1 = 0; v1 < N; v1 ++) { printf("V%d: ",v1); for(v2 = 0; v2 < N; v2 ++) if(matrix[v1][v2]) printf(" V%d,",v2); BACKSPACE(); } v1 = 0; for(v1 = 0; v1 < N; v1++) DFS(matrix,v1,visited); BACKSPACE(); return 0; }