Cod sursa(job #1341316)
Utilizator | Data | 12 februarie 2015 17:08:24 | |
---|---|---|---|
Problema | Ferma | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.56 kb |
#include <iostream>
#include <fstream>
#include <queue>
#include <iomanip>
#include <vector>
using namespace std;
struct koord
{
int x,y;
};
int main()
{
ifstream be("ferma.in");
ofstream ki ("ferma.out");
int v,m,n;
be >> v >> m >>n;
char tomb[m][n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
be >> tomb[i][j];
}
}
char tomb2[m+2][n+2];
for(int i=0;i<m+2;i++)
{
for(int j=0;j<n+2;j++)
{
if(i==0 ||j==0 || i==m+1 || j==n+1)
{
tomb2[i][j]=0;
}
else{
tomb2[i][j]=tomb[i-1][j-1];}
}
}
int volt[m+2][n+2];
for(int i=0;i<m+2;i++)
{
for(int j=0;j<n+2;j++)
{
volt[i][j]=0;
}
}
int ln=0;
int jel;
int sz=0;
vector<int> ter;
for(int i=1;i<m+1;i++)
{
for(int j=1;j<n+1;j++)
{
if(!(volt[i][j]))
{
sz++;
queue<koord> jar;
koord k;
k.x=i;
k.y=j;
jar.push(k);
volt[k.x][k.y]=sz;
jel=1;
koord cs;
while(jar.size()>0)
{
cs=jar.front();
jar.pop();
if(tomb2[cs.x][cs.y]==tomb2[cs.x-1][cs.y] && !(volt[cs.x-1][cs.y]))
{
k.x=cs.x-1;
k.y=cs.y;
jar.push(k);
volt[cs.x-1][cs.y]=sz;
jel++;
// cout << "bal";
}
if(tomb2[cs.x][cs.y]==tomb2[cs.x+1][cs.y] && !(volt[cs.x+1][cs.y]))
{
k.x=cs.x+1;
k.y=cs.y;
jar.push(k);
volt[cs.x+1][cs.y]=sz;
jel++;
// cout << "jobb";
}
if(tomb2[cs.x][cs.y]==tomb2[cs.x][cs.y-1] && !(volt[cs.x][cs.y-1]))
{
k.x=cs.x;
k.y=cs.y-1;
jar.push(k);
volt[cs.x][cs.y-1]=sz;
jel++;
// cout << "le";
}
if(tomb2[cs.x][cs.y]==tomb2[cs.x][cs.y+1] && !(volt[cs.x][cs.y+1]))
{
k.x=cs.x;
k.y=cs.y+1;
jar.push(k);
volt[cs.x][cs.y+1]=sz;
jel++;
// cout << "fel";
}
}
ter.push_back(jel);
}
if(ln<jel)
{
ln=jel;
}
}
}
if(v==1)
{
ki << ln;}
// for(int i=1;i<m+1;i++)
// {
// for(int j=1;j<n+1;j++)
// {
//
// cout << setw(3) << volt[i][j];
// }
// cout << endl;
// }
// for(int i=0;i<ter.size();i++)
// {
// cout << ter[i] << " ";
// }
return 0;
}