Skip to main content

[ UVa ] 599 - The Forrest for the Trees

  • Given a forest you are to write a program that counts the number of trees and acorns.
  • কোন একটা গ্রাফে Number of Connected Component = মোট Edge সংখ্যা - মোট ভারটেক্স সংখ্যা । 
  • আমরা যদি Adjacent List বানায় তবে যে Node এর Adjacent List এর সাইজ শূন্য সেটা একটা Acorns. 
  • আর সাইজ শূন্য থেকে বড় হলে সেটা একটা ট্রি । 
কোড :
/**
* Problem : 599 - The Forrest for the Trees.
* Verdict : Accepted.
* Time : 0.400 ms.
* Write : Mehadi Hasan Menon.
* Date : 31.12.16.
**/
#include <iostream>
#include <vector>
using namespace std;
vector <int> AdjList[27];
int main()
{
freopen("input.txt", "r+", stdin);
int tc, edges;
cin >> tc;
cin.ignore();
for(int t = 1; t <= tc; t++)
{
string s;
edges = 0;
while(true) {
getline(cin, s);
if(s[0] == '*') {
break;
}
char x, y; bool flag = true;
// Extract value of x & y from string;
for(int i = 0; s[i]; i++) {
if(s[i] >= 'A' && s[i] <= 'Z') {
if(flag == true) {
x = s[i];
flag = false;
}
else {
y = s[i];
break;
}
}
}
// it's time to make adjacent list :)
AdjList[x - 'A'].push_back(y - 'Z');
AdjList[y - 'A'].push_back(x - 'Z');
edges += 1;
}
int trees, acorns, nodes;
getline(cin, s);
nodes = acorns = 0;
for(int i = 0; s[i]; i++) {
// check if a node has some adjacent node of not :)
if(s[i] >= 'A' && s[i] <= 'Z') {
if(AdjList[ s[i] - 'A' ].size() == 0) {
acorns += 1;
nodes += 1;
}
else {
nodes += 1;
AdjList[ s[i] - 'A' ].clear();
}
}
}
// number of connected component in our graph is
trees = nodes - edges;
if(acorns > 0) {
trees = trees - acorns;
}
cout << "There are " << trees << " tree(s) and " << acorns << " acorn(s)." << endl;
}
return 0;
}
view raw 599.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