hiho week 159 register

Ended

Participants:533

Verdict:Accepted
Score:100 / 100
Submitted:2017-07-19 14:47:39

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<vector>
#include<set>
using namespace std;
int N, M, x, y,tem, ans=2;
vector<vector<int> > map;
vector<vector<set<int> > > neigh;
void DFS(int x, int y,int preX, int preY, int val)
{
    if(x<0 || x>=N || y<0 || y>=M ||map[x][y]!=val||neigh[x][y].count(preX*M+preY)) return;
    if(neigh[x][y].size() == 0) ans += 2;
    else ans -= 2;
    neigh[preX][preY].insert(x*M+y);
    neigh[x][y].insert(preX*M+preY);
    DFS( x+1, y, x, y, val);
    DFS( x-1, y, x, y, val);
    DFS( x, y+1, x, y, val);
    DFS( x, y-1, x, y, val);
}
int main()
{
    cin >> N >> M >> x >> y;
    map.resize(N, vector<int>(M));
    neigh.resize(N, vector<set<int> >(M));
    for(int i = 0; i < N; i++)
        for(int j =0; j < M; j++)
        {
            cin >> tem;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX