Submission #1107976

#TimeUsernameProblemLanguageResultExecution timeMemory
11079760pt1mus23Tracks in the Snow (BOI13_tracks)C++14
14.27 / 100
2082 ms929608 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int #define ins insert #define pb push_back #define endl '\n' #define putr(x) cout<<x<<endl;return; #define all(x) x.begin(),x.end() const int mod = 1e9 +7, sze = 4005, inf = INT_MAX, LL = 30; const int dx[4] = {-1,1,0,0}; const int dy[4] = {0,0,-1,1}; int comp[sze][sze]; map<pair<int,int>,int> var; vector<int> graph[sze*sze]; int used[sze*sze]; void rush(){ int n,m; cin>>n>>m; vector<vector<char>> arr(n,vector<char>(m)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ comp[i][j]=0; cin>>arr[i][j]; } } int x,y; int c=1,a,b; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(arr[i][j]!='.'){ if(!comp[i][j]){ comp[i][j]= (c++); } for(int k=0;k<4;k++){ x= i + dx[k]; y = j + dy[k]; if( x>=0 && y>=0 && x<n && y<m){ if(arr[i][j] == arr[x][y]){ comp[x][y]=comp[i][j]; } else{ if(arr[x][y]!='.' && comp[x][y]){ a = comp[x][y]; b = comp[i][j]; if(!var[make_pair(min(a,b),max(a,b))]){ var[make_pair(min(a,b),max(a,b))]=1; graph[a].pb(b); graph[b].pb(a); } } } } } } } } int ans=1; queue< pair<int,int>> q; q.push({1,1}); while(!q.empty()){ pair<int,int> node =q.front(); q.pop(); if(!used[node.first]){ ans=max(ans,node.second); used[node.first]=1; for(auto v:graph[node.first]){ if(!used[v]){ q.push({v,node.second+1}); } } } } putr(ans); } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tt = 1; // cin>>tt; while(tt--){ rush(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...