fr.c
#include <stdio.h>
#include <stdlib.h>
typedef struct hrana {
struct hrana *next;
struct vrchol *vrchol;
} Hrana;
typedef struct vrchol {
int val;
int uzav;
struct hrana *hrana;
} Vrchol;
Vrchol* vytvor(int val, int uzav) {
Vrchol
*v
= (Vrchol
*) malloc(sizeof(Vrchol
)); v->val = val;
v->uzav = uzav;
v->hrana = NULL;
return v;
}
Vrchol* hladaj(Vrchol *v, int A, int B) {
Vrchol *p;
if (v->val == A || v->val == B) {
return v;
}
else {
Hrana *hrana = v->hrana;
while (hrana != NULL) {
p = hladaj(hrana->vrchol, A, B);
if(p!=NULL)
return p;
hrana = hrana->next;
}
}
return NULL;
}
void pridaj(Vrchol* v, int A, int B, int uzav) {
Hrana
*nova
= (Hrana
*) malloc(sizeof(Hrana
)); nova->next = NULL;
if (v->val == A) // v->B
nova->vrchol = vytvor(B, uzav);
else
nova->vrchol = vytvor(A, uzav);
if (v->hrana == NULL) // Bez hran
v->hrana = nova;
else {
Hrana *h = v->hrana;
while (h != NULL) {
if (h->next == NULL) {
h->next = nova;
break;
}
h = h->next;
}
}
}
int uzaver(Vrchol *v) {
int pom = 0;
if (v->hrana == NULL) return v->uzav;
else
{
Hrana *h = v->hrana;
while (h != NULL) {
pom += uzaver(h->vrchol);
h = h->next;
}
}
return pom;
}
int main()
{
int n, val, A, B;
while (scanf("%d %d", &n
, &val
) > 0) { Vrchol *v = vytvor(val, -1);
while ((n-1) > 0) {
scanf("%d %d %d", &A
, &B
, &val
); //printf("%d\n", hladaj(v, A, B)->val);
pridaj(hladaj(v, A, B), A, B, val);
n--;
}
}
return 0;
}