Skip to main content

[ UVa ] 336 - A Node Too Far

  • গ্রাফ টি সবসময় connected নাও থাকতে পারে । 
  • সোর্স নোড টি মূল গ্রাফে নাও থাকতে পারে । সেই ক্ষেত্রে মূল গ্রাফে যতগুলি নোড আছে সেটা প্রিন্ট করতে হবে । 
  •  TTL এর মান যত দেয়া থাকবে আমরা গ্রাফ কে ততো লেবেল পর্যন্ত সার্চ করে visited মার্ক করবে । এবং মোট নোড থেকে এই visited নোড কে বিয়োগ করে যেটা পাব সেটায় আমাদের প্রিন্ট করতে হবে । 
কোড :
/**
* Problem : 336 - A Node Too Far.
* Verdict : Accepted.
* Writer : Mehadi Hasan Menon.
* Time : 0.060 ms.
* */
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
using namespace std;
const int mx = 10007;
set <int> my_set;
vector<int> graph[mx];
int bfs(int src, int ttl)
{
map <int, bool> vis;
map <int, int> label;
// set all the node visited to false.
for(auto i = my_set.begin(); i != my_set.end(); ++i) {
vis[*i] = false;
label[*i] = 0;
}
queue <int> Q;
int total_vis_node = 1;
Q.push(src);
vis[src] = true;
while(!Q.empty())
{
int u = Q.front(); Q.pop();
if(label[u] >= ttl) {
break; // we can't go through after this label.
}
for(int i = 0; i < graph[u].size(); i++)
{
int v = graph[u][i];
if(vis[v] == false)
{
label[v] = label[u] + 1;
vis[v] = true;
total_vis_node += 1;
Q.push(v);
}
}
}
return total_vis_node;
}
int main()
{
freopen("input.txt", "r+", stdin);
int nc, tc;
tc = 1;
while(scanf("%d", &nc) && nc != 0)
{
int x, y;
for(int i = 0; i < nc; i++)
{
scanf("%d %d", &x, &y);
graph[x].push_back(y);
graph[y].push_back(x);
// count total number of nodes in our network.
my_set.insert(x);
my_set.insert(y);
}
int src, ttl;
int total_node = my_set.size();
while(scanf("%d %d", &src, &ttl))
{
if(src == 0 && ttl == 0) {
break;
}
int total_vis_node = 0;
// check the given source is in the graph or not
if(my_set.find(src) != my_set.end()) {
total_vis_node = bfs(src, ttl);
}
int unreachable_node = total_node - total_vis_node;
printf("Case %d: %d nodes not reachable from node %d with TTL = %d.\n", tc++, unreachable_node, src, ttl);
}
my_set.clear(); // clear every node form set.
for(int i = 0; i < mx; i++) {
graph[i].clear();
}
}
return 0;
}
view raw 336.cpp hosted with ❤ by GitHub

Comments

Popular posts from this blog

উবুন্টুতে রুট পাসওয়ার্ড ভুলে তা রিকভার করার উপায় ।

যদি কেউ রুট পাসওয়ার্ড ভুলে যান তাহলে নিচের কাজ গুলো করে নতুন পাসওয়ার্ড সেট করতে পারবেন: প্রথমে পিসি রিস্টার্ট দিন । দিয়ে UP/DOWN করে kernel version সিলেক্ট করে e চাপুন । ব্ল্যাক Screen আসবে এবার একটা Space দিয়ে লিখুন “Single” [ Enter ] এরপর b চাপুন ফলাফল : লিনাক্সের Single user Mood এ চলে আসছেন । এখন লিখুন passwd root [ Enter ] এখন নতুন পাসওয়ার্ড খানা টাইপ করেন [ এন্টার ] আবার টাইপ করেন [ এন্টার ] কাজ শেষ , এবার reboot টাইপ করেন । এখন নতুন পাসওয়ার্ড দিয়ে লগইন করেন। পুনশ্চ : যদি আপনার উইন্ডোজ এর সাথে ডুয়েল বুট করা থাকে তবে এই প্রক্রিয়া কাজ করবে না ।

Fix The BIOS in this system is not fully ACPI compliant in Windows 7

এই সমস্যা সমাধান করার জন্য আপনি নিচের ধাপ গুলো অনুসরণ করুন। ধাপ ১ :  আপানর  কম্পিউটার এ উইন্ডোজ এর ডিস্ক থেকে বুট করুন । নীচের মত উইন্ডো আসলে Shift + F10 চাপুন । এর ফলে কমান্ড প্রম্প্ট ওপেন হবে। ধাপ ২ : এখন CMD তে নিচের কমান্ড গুলি ধারবাহিক ভাবে লিখুন C: bootrec /FixMbr bootrec /FixBoot bootrec /RebuildBcd exit  এখানে  C হলো যে ড্রাইভ এ উইন্ডোজ দেয়া আছে।  আপনার যদি অন্য কোনো ড্রাইভ ( D, E, F, ..... ) এ উইন্ডোজ দেয়া থাকে তবে আপনাকে C এর জায়গায় সেই ড্রাইভ এর নাম লিখতে হবে।  উপরের সব কমান্ড যদি সঠিক ভাবে বিল্ড হয় তবে আপনি আপনার কম্পিউটার রিস্টার্ট দিন।  দেখবেন আপনার সমস্যা সমাধান হয়ে গেছে :D