#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<map>
using namespace std;
int main() {
int from, to, nc, ttl, t = 1, llega, total_nodes;
map< int,vector > adyacencia;
map< int, int > dist;
while (cin >> nc && nc) {
adyacencia.clear();
for (int i = 0; i < nc; i++) {
cin >> from >> to;
adyacencia[from].push_back(to);
adyacencia[to].push_back(from);
}
total_nodes = adyacencia.size();
while (cin >> from >> ttl) {
if (from == 0 && ttl == 0) break;
dist.clear();
queue q;
q.push(from);
dist[from] = 0;
while (!q.empty()) {
int u = q.front(); q.pop();
//printf("Visit %d, Layer %d\n", u, dist[u]);
for (int i = 0; i < adyacencia[u].size(); i++) {
if (!dist.count(adyacencia[u][i])) {
dist[adyacencia[u][i]] = dist[u] + 1;
q.push(adyacencia[u][i]);
}
}
}
llega = 0;
for (map::iterator it = dist.begin(); it != dist.end(); it++) {
if (it->second <= ttl) llega++;
}
printf("Case %d: %d nodes not reachable from node %d with TTL = %d.\n", t++, total_nodes - llega, from, ttl);
}
}
return 0;
}
lunes, 24 de octubre de 2011
336 - A Node Too Far - UVA
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario