This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/**
██╗░░██╗████████╗██╗░░░░░███╗░░░███╗
██║░░██║╚══██╔══╝██║░░░░░████╗░████║
███████║░░░██║░░░██║░░░░░██╔████╔██║
██╔══██║░░░██║░░░██║░░░░░██║╚██╔╝██║
██║░░██║░░░██║░░░███████╗██║░╚═╝░██║
╚═╝░░╚═╝░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═╝
**/
#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#define int l
#define f first
#define ara <<" "<<
#define s second
#define endl '\n'
#define l long long
#define pb push_back
#define pairs pair<l,l>
#define all(v) v.begin(),v.end()
#define yesno(v) ((v) ? "YES" : "NO")
#define dbg(x) cout<<#x<<" = "<<x<<endl;
#define filereader() ifstream cin(input);
#define fileprinter() ofstream cout(output);
#define fast ios_base::sync_with_stdio(NULL);cin.tie(NULL);cout.tie(NULL);
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less_equal<int> , rb_tree_tag, tree_order_statistics_node_update> indexed_set;
ifstream in;
ofstream out;
l gcd(l a, l b){
return (b == 0) ? a : gcd(b, a%b);
}
const l N = 4000 + 5;
const l INF = 1e18;
const l mod = 1e9 + 7;
const string input = "input.txt";
const string output = "output.txt";
l dx[] = {-1,1,0,0};
l dy[] = {0,0,1,-1};
char chr;
queue<pairs>q;
vector<vector<char>>a(N,vector<char>(N,'.'));
vector<vector<bool>>ch(N,vector<bool>(N,0));
void dfs(l x,l y){
ch[x][y] = 1;
for(int i = 0 ; i < 4;i++){
l tx = dx[i] + x;
l ty = dy[i] + y;
if(a[tx][ty] == '.'){
continue;
}
if(a[tx][ty] == chr){
if(ch[tx][ty] == 0)
dfs(tx,ty);
continue;
}
else{
q.push({tx,ty});
}
}
}
signed main(){
//fast;
system("color a");
l n,m;
cin>>n>>m;
l temp1 = 0, temp2 = 0;
for(int i = 1 ; i <= n ; i++){
for(int j = 1; j <= m ;j++){
cin>>a[i][j];
if(a[i][j] == 'R'){
temp1 ++;
}
if(a[i][j] == 'F'){
temp2 ++;
}
}
}
if(temp1 == 0 and temp2 == 0){
cout<<0;return 0;
}
if(temp1 != 0 and temp2 == 0){
cout<<1;return 0;
}
if(temp1 == 0 and temp2 != 0){
cout<<1;return 0;
}
q.push({1,1});
l ans = 0;
chr = '.';
while(q.size()){
pairs p = q.front();q.pop();
//system("pause");
if(ch[p.f][p.s]){
continue;
}
//cout<<p.f<<" "<<p.s<<endl;
if(chr != a[p.f][p.s])
ans ++;
chr = a[p.f][p.s];
dfs(p.f,p.s);
}
cout<<ans<<endl;
}
Compilation message (stderr)
tracks.cpp: In function 'int main()':
tracks.cpp:90:11: warning: ignoring return value of 'int system(const char*)' declared with attribute 'warn_unused_result' [-Wunused-result]
90 | system("color a");
| ~~~~~~^~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |