Rezultati

Up. imeNalogaJezikRezultatČas oddaje
ctrl-alt-defeat-2019 Gozdovi C++ 100/100OK 24. apr '19 @ 16:33

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 10/10 3,039 MiB 0,000 s OK
#2 [več] 10/10 3,449 MiB 0,022 s OK
#3 [več] 10/10 8,289 MiB 0,087 s OK
#4 [več] 10/10 3,578 MiB 0,015 s OK
#5 [več] 10/10 3,035 MiB 0,000 s OK
#6 [več] 10/10 3,984 MiB 0,028 s OK
#7 [več] 10/10 3,074 MiB 0,032 s OK
#8 [več] 10/10 3,078 MiB 0,021 s OK
#9 [več] 10/10 3,328 MiB 0,022 s OK
#10 [več] 10/10 3,313 MiB 0,032 s OK

Ocenjevani program (gozdovi.cpp):
#include <iostream>
#include <string>
#include <vector>
using namespace std;

struct loc
{
	int x;
	int y;
};

int n, m;
vector<vector<int > > gozd;
	
void dfs(int x, int y, int c)
{
	gozd[x][y]=-1;
	for(int i=-1;i<=1;i++)
	{
		for(int j=-1;j<=1;j++)
		{
			if(x+i>=0 && x+i<n && y+j>=0 && y+j<m)
				if(gozd[x+i][y+j]==c)
					dfs(x+i, y+j, c);
		}
	}
}

int main()
{

	cin >> n >> m;

	while(n!=0 || m!=0)	{
		if(m==0 || n==0)
			cout << 0;
		else
		{
		gozd.resize(n);
		for(int i=0;i<n;i++)
		{
			gozd[i].resize(m);
			string s;
			cin >> s;
			for(int j=0;j<m;j++)
			{
				gozd[i][j]=s[j]-'A';
			}
		}
		
		int frts=0;
	
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				if(gozd[i][j]!=-1)
				{
					frts++;
					dfs(i, j, gozd[i][j]);
				}
			}
		}
		cout << frts << endl;
	}
	cin >> n >> m;
}}