Skip to main content

[ UVa ] 785 - Grid Colouring.

  • প্রথমে Contours char কে খুজে বের করত হবে । একটা সেট এ একটাই Contours char থাকবে । 
  • এখন একটা করে লাইন রিড করবো এবং দেখব সেখানে marking char আছে কি না । যদি থাকে তবে সেই char টি একটি ভেক্টরে জমা করে রাখব এবং এর পজিশন অন্য একটি ভেক্টরে জমা করে রাখব । 
  • আমরা যদি লাইন রিড করতে করতে কোন একটা লাইনের শুরু তে ' _ ' পেয়ে যাই তার মানে এখন আমাকে রিড করা গ্রিড টি Execute করেত হবে । 
  • এই অবস্থায় আমরা আমাদের প্রত্যেক marking char এর জন্য  DFS / BFS চালায়া দেই এবং সব শেষে আমাদের গ্রিড কে প্রিন্ট করি তাহলেই আমাদের সমস্যা সমাধান হয়ে যাবে । 
কোড : 
/**
* Problem : 785 - Grid Colouring.
* Verdict : Accepted.
* Writer : Mehadi Hasan Menon.
* Date : 24.12.16.
**/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <vector>
using namespace std;
char maze[50][100];
char contours_char;
int dr[] = {-1, 0, 1, 0};
int dc[] = {0, 1, 0, -1};
void dfs(int r, int c, char marking_char)
{
if(maze[r][c] == contours_char || maze[r][c] == marking_char) {
return;
}
if(maze[r][c] == ' ')
{
maze[r][c] = marking_char;
for(int i = 0; i < 4; i++)
{
int new_row = r + dr[i];
int new_col = c + dc[i];
// traverse all adjacent
dfs(new_row, new_col, marking_char);
}
}
}
int main()
{
freopen("input.txt", "r+", stdin);
char line[100];
bool found_contours_char = false;
int r = 0;
vector < pair<int, int> > vip_index;
vector <char> vc_marking_char;
while(gets(line))
{
// find contours char
if(found_contours_char == false)
{
for(int c = 0; line[c]; c++)
{
if(isprint(line[c]) && line[c] != ' ')
{
contours_char = line[c];
found_contours_char = true;
break;
}
}
}
// find all marking_char's position
for(int c = 0; line[c]; c++)
{
if(line[c] != contours_char && line[c] != ' ' && line[c] != '_')
{
int marking_char_row = r;
int marking_char_col = c;
// track the location of marking char in maze & and the char itself
vip_index.push_back(make_pair(marking_char_row, marking_char_col));
vc_marking_char.push_back(line[c]);
}
}
strcpy(maze[r], line);
r += 1;
if(line[0] == '_')
{
int sz = vip_index.size();
int row, col;
char marking_char;
for(int contours = 0; contours < sz; contours++)
{
row = vip_index[contours].first;
col = vip_index[contours].second;
marking_char = vc_marking_char[contours];
// for 1st time dfs call
maze[row][col] = ' ';
// fill all
dfs(row, col, marking_char);
vip_index.clear();
vc_marking_char.clear();
}
// print result
for(int i = 0; i < r; i++)
{
puts(maze[i]);
}
r = 0;
found_contours_char = false;
}
}
return 0;
}
view raw 785.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