Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstdio>
- #include <vector>
- #include <queue>
- using namespace std;
- vector <int> ara[100000];
- int bfs(int src, int leve, int node) {
- queue <int> q;
- q.push(src);
- int visited[32700] = {0}, level[32700]={0};
- visited[src] = 1;
- level[src] = 0;
- int ans = 0;
- while (!q.empty()) {
- int z = q.front();
- if (level[z] <= leve && level[z] != 0) ans++;
- if (level[z] > leve) {
- ans--;
- break;
- }
- for (int i = 0; i<ara[z].size(); i++) {
- int cur = ara[z][i];
- if (!visited[cur]) {
- level[cur] = level[z] + 1;
- visited[cur] = 1;
- q.push(cur);
- }
- }
- q.pop();
- }
- return node-ans-1;
- }
- int main() {
- int n, m, in1, in2, i,cs=0;
- while (scanf("%d", &n)) {
- if (n==0) return 0;
- int node=0;
- for (i=0; i<n; i++) {
- scanf("%d %d", &in1 , &in2);
- if (ara[in1].empty()) node++;
- else if (ara[in2].empty()) node++;
- ara[in1].push_back(in2);
- ara[in2].push_back(in1);
- }
- int x, y;
- while (scanf("%d %d", &x, &y)) {
- if (x == 0 && y==0) break;
- else printf("Case %d: %d nodes not reachable from node %d with TTL = %d.\n", ++cs, bfs(x, y, node), x, y);
- }
- for (int z=0; z<100000; z++) ara[z].clear();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment