#include #define MV 30 /* Maximální počet vrcholů */ #define ME 450 /* Maximální počet hran */ int st[MV]; /* Stupeň vrcholu */ int sou[MV][MV]; /* Seznam sousedů */ int p[MV]; /* Pořadí při procházení */ int v; /* Skutečný počet vrcholů */ int poc=0; /* Počitadlo pro číslování */ int hledej(int l, int u) /* Zde se hledají mosty\dots */ { int i, w, pom, r; r = p[u] = ++poc; /* Očíslujeme vrchol */ for (i=0; i p[u]) printf("(%d, %d)\n", u, w); /* Most */ else if (pom < r) r = pom; /* Menší? */ } else if (p[w] < r && w != l) r = p[w]; /* Menší? */ return r; } int main(void) { int i, j; scanf("%d", &v); while (scanf(" (%d, %d)", &i, &j), i || j) { sou[i][st[i]++] = j; sou[j][st[j]++] = i; } hledej(v, 0); return 0; }