国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

51Nod - 1416 搜索環(huán)

2019-11-10 17:34:35
字體:
供稿:網(wǎng)友

題意:

福克斯在玩一款手機(jī)解迷游戲,這個游戲叫做”兩點”。基礎(chǔ)級別的時候是在一個n×m單元上玩的。像這樣:

 

每一個單元有包含一個有色點。我們將用不同的大寫字母來表示不同的顏色。

這個游戲的關(guān)鍵是要找出一個包含同一顏色的環(huán)。看上圖中4個藍(lán)點,形成了一個環(huán)。一般的,我們將一個序列 d1,d2,...,dk 看成一個環(huán),當(dāng)且僅當(dāng)它符合下列條件時:

1.    這k個點不一樣,即當(dāng) i≠j時, di 和 dj不同。

2.    k至少是4。

3.    所有的點是同一種顏色。

4.    對于所有的 1≤i≤k-1: di 和 di+1 是相鄰的。還有 dk 和 d1 也應(yīng)該相鄰。單元 x 和單元 y 是相鄰的當(dāng)且僅當(dāng)他們有公共邊。

當(dāng)給出一幅格點時,請確定里面是否有環(huán)。

Input
單組測試數(shù)據(jù)。第一行包含兩個整數(shù)n和m (2≤n,m≤50):板子的行和列。接下來n行,每行包含一個有m個字母的串,表示當(dāng)前行每一個點的顏色。每一個字母都是大寫字母。Output
如果有環(huán)輸出Yes,否則輸出No。Input示例
3 4AAAAABCAAAAA3 4AAAAABCAAADAOutput示例
YesNo

思路:

簡單的搜索環(huán),將相同顏色且互相可以到達(dá)的點都連上邊然后判斷是否存在環(huán)就行了,按照這樣的建圖方式,如果有環(huán)一定不小于4,所以不需要判斷環(huán)的大小。

代碼:

#include <bits/stdc++.h>using namespace std;const int MAXN = 55;char str[MAXN][MAXN];vector <int> G[MAXN * MAXN];bool vis[MAXN * MAXN];bool dfs(int u, int PRe) {    vis[u] = true;    int cnt = G[u].size();    for (int i = 0; i < cnt; i++) {        int v = G[u][i];        if (v == pre) continue;        if (vis[v] || dfs(v, u)) return true;    }    return false;}const int dx[] = {-1, 1, 0, 0};const int dy[] = {0, 0, -1, 1};int main() {    int n, m;    scanf("%d%d", &n, &m);    for (int i = 0; i < n; i++) {        scanf("%s", str[i]);    }    for (int x = 0; x < n; x++) {        for (int y = 0; y < m; y++) {            int u = x * m + y;            for (int k = 0; k < 4; k++) {                int nx = x + dx[k], ny = y + dy[k];                if (nx < 0 || nx >= n || ny < 0 || ny >= m) continue;                if (str[nx][ny] != str[x][y]) continue;                int v = nx * m + ny;                G[u].push_back(v);            }        }    }    for (int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            int u = i * m + j;            if (vis[u]) continue;            if (dfs(u, -1)) {                puts("Yes");                return 0;            }        }    }    puts("No");    return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌拉特中旗| 宁陵县| 诸暨市| 资源县| 泰来县| 宕昌县| 泰和县| 彩票| 莒南县| 淳化县| 沽源县| 西和县| 凤翔县| 甘泉县| 体育| 长岭县| 灯塔市| 宜兰市| 赤水市| 怀化市| 十堰市| 武邑县| 三台县| 乐安县| 壶关县| 确山县| 墨玉县| 柳河县| 宜春市| 阳山县| 昌吉市| 乌审旗| 逊克县| 东海县| 永顺县| 凯里市| 济南市| 财经| 随州市| 崇义县| 柳林县|