青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj 1984 Navigation Nightmare 并查集

   并查集應(yīng)用的變形。題目意思是一個圖中,只有上下左右四個方向的邊。給出這樣的一些邊,
求任意指定的2個節(jié)點(diǎn)之間的距離。
   有可能當(dāng)前給出的信息,沒有涉及到要求的2個節(jié)點(diǎn),或者只涉及到了1個節(jié)點(diǎn),那么肯定
無法確定它們的距離。或者根據(jù)已經(jīng)給出的邊只知道這2個節(jié)點(diǎn)在不同的聯(lián)通分量里面,那么其
距離也是無法確定的,根據(jù)題目要求,輸出-1。
   問題是如果能夠確定它們在一個聯(lián)通分量里面,如何確定它們的距離了。
   這個題的關(guān)鍵在于,只有上下左右四個方向的邊,假設(shè)每個節(jié)點(diǎn)都有一個坐標(biāo)的話,那么它們
相對于代表該聯(lián)通分量節(jié)點(diǎn)的坐標(biāo)肯定是固定的,那么就不需要考慮圖里面有環(huán)之類的情況了。
這樣就可以很方便的應(yīng)用并查集來解了。
   利用并查集,給每個節(jié)點(diǎn)附加其它信息,即相對于代表該并查集的節(jié)點(diǎn)的坐標(biāo)(x,y)。
在FindSet里面求出坐標(biāo),在UnionSet里面修改合并后新加入的另外一個集合的根節(jié)點(diǎn)的坐標(biāo)即可。
   代碼如下:

#include <stdio.h> 
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;

const int MAX_N = 40010;
int nN, nM;
int nSets[MAX_N];
int nX[MAX_N];
int nY[MAX_N];
char szInput[MAX_N][100];

void MakeSets(int nNum)
{
    for (int i = 0; i < nNum; ++i)
    {
        nSets[i] = i;
        nX[i] = nY[i] = 0;
    }
}

int FindSets(int nI)
{
    if (nSets[nI] != nI)
    {
        int nPre = nSets[nI];
        nSets[nI] = FindSets(nSets[nI]);
        nX[nI] += nX[nPre];
        nY[nI] += nY[nPre];
    }
    return nSets[nI];
}

void UnionSets(int nBeg, int nEnd, int dx, int dy)
{
    int nA = FindSets(nBeg);
    int nB = FindSets(nEnd);
    if (nA != nB)
    {
        nSets[nB] = nA;//把集合B合并到集合A中
        nX[nB] = nX[nBeg] + dx - nX[nEnd];//因?yàn)榉较蚰孢^來了,所以是減去
        nY[nB] = nY[nBeg] + dy - nY[nEnd];
    }
}

int main()
{
    int nBeg, nEnd, nL;
    char szDir[10];

    while (scanf("%d%d%*c", &nN, &nM) == 2)
    {
        MakeSets(nN);
        for (int i = 0; i < nM; ++i)
        {
            fgets(szInput[i], 100, stdin);
        }
        int nK;
        int nF1, nF2, nI;
        scanf("%d", &nK);
        int nCur = 0;
        while (nK--)
        {
            scanf("%d%d%d", &nF1, &nF2, &nI);
            for (int i = nCur; i < nI; ++i)
            {
                sscanf(szInput[i], "%d%d%d%s", &nBeg,
                       &nEnd, &nL, szDir);
                int dx = 0, dy = 0;
                switch (szDir[0])
                {
                    case 'N': dy += nL; break;
                    case 'S': dy -= nL; break;
                    case 'E': dx += nL; break;
                    case 'W': dx -= nL; break;
                }
                UnionSets(nBeg, nEnd, dx, dy);
            }
            nCur = nI;
            
            if (FindSets(nF1) != FindSets(nF2))
            {
                printf("-1\n");
            }
            else
            {
                printf("%d\n", abs(nX[nF1] - nX[nF2])
                        + abs(nY[nF1] - nY[nF2]));
            }
        }
    }

    return 0;
}

posted on 2012-10-09 21:25 yx 閱讀(967) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導(dǎo)航

統(tǒng)計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學(xué)

網(wǎng)友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情亚洲| 欧美色一级片| 很黄很黄激情成人| 一区二区三区精品视频在线观看| 亚洲人午夜精品免费| 蜜臀91精品一区二区三区| 男人的天堂成人在线| 亚洲二区视频在线| 欧美日韩精品免费观看视频| 亚洲图片在区色| 久久综合网络一区二区| 在线观看视频一区二区| 欧美连裤袜在线视频| 欧美一级一区| 欧美日韩精品免费观看| 亚洲国产精品激情在线观看| 亚洲激情视频在线| 国产精品成人久久久久| 性视频1819p久久| 欧美激情一区二区| 亚洲精品乱码久久久久久黑人| 欧美伊人久久久久久午夜久久久久 | 久久成人一区| 亚洲精品欧美极品| 久久久久国产精品午夜一区| 一二三区精品| 国产日韩视频一区二区三区| 免费观看亚洲视频大全| 欧美一区二区精美| 久久乐国产精品| 欧美综合国产| 欧美私人啪啪vps| 黄色成人在线免费| 一区二区三区四区五区视频| 亚洲激情视频网站| 香蕉久久夜色精品| 中文在线不卡| 中文在线资源观看网站视频免费不卡| 亚洲欧美亚洲| 午夜久久黄色| 亚洲国产成人在线| 欧美黄在线观看| 亚洲综合国产| 亚洲午夜国产一区99re久久| 巨胸喷奶水www久久久免费动漫| 久久久国产精品一区二区中文| 亚洲午夜av在线| 欧美成人午夜免费视在线看片 | 久久精品国产欧美激情| 午夜精品剧场| 亚洲九九爱视频| 欧美国产一区视频在线观看| 欧美成人午夜剧场免费观看| 国产一区91| 伊人精品久久久久7777| 午夜影院日韩| 亚洲一区二区三区在线看| 亚洲男女自偷自拍| 欧美国产免费| 亚洲精品日本| 亚洲中午字幕| 久久精品一区中文字幕| 夜夜嗨av一区二区三区中文字幕 | 久久久精品五月天| 国产欧美日韩在线| 韩国av一区二区| 午夜国产精品视频免费体验区| 日韩亚洲不卡在线| 欧美资源在线观看| 国产日韩精品在线播放| 久久精品在线播放| 久久看片网站| 亚洲啪啪91| 91久久精品美女| 亚洲天堂黄色| 国产精品欧美风情| 亚洲风情亚aⅴ在线发布| 久久午夜av| 99精品国产一区二区青青牛奶| 欧美激情二区三区| 一本色道久久综合狠狠躁的推荐| 亚洲欧洲一区二区在线播放| 欧美激情aⅴ一区二区三区| 日韩亚洲综合在线| 欧美一区二区女人| 欧美第一黄网免费网站| 日韩视频免费观看| 欧美日韩亚洲不卡| 国产日韩一区二区三区| 久久精品网址| 欧美激情网站在线观看| 极品av少妇一区二区| 亚洲国内精品在线| 亚洲精品久久久蜜桃| 国产精品人成在线观看免费| 亚洲第一福利社区| 亚洲欧美色一区| 久久国产精品高清| 9久草视频在线视频精品| 中国女人久久久| 欧美精品手机在线| 欧美在线视频免费观看| 一本色道久久综合亚洲91| 国产欧美一区二区精品秋霞影院 | 国产一区二区三区在线观看网站| 久久中文在线| 国产精品jvid在线观看蜜臀| 亚洲国产经典视频| 99riav1国产精品视频| 国产一区美女| 午夜在线电影亚洲一区| 久久一区二区三区国产精品| 国产精品高清免费在线观看| 久久亚洲国产精品一区二区| 欧美激情国产日韩精品一区18| 日韩一级片网址| 亚洲欧洲在线看| 午夜精品久久一牛影视| 欧美日韩一二三区| 久久一区二区三区超碰国产精品| 欧美日韩国产影片| 欧美激情亚洲| 在线观看91精品国产入口| 一区二区三区国产在线| ●精品国产综合乱码久久久久| 午夜一区在线| 欧美综合国产精品久久丁香| 国产精品黄视频| av成人老司机| 亚洲午夜电影网| 亚洲视频欧美视频| 亚洲精品一区在线观看| 亚洲国产日韩欧美在线动漫| 欧美寡妇偷汉性猛交| 久久全球大尺度高清视频| 另类成人小视频在线| 久久精品国产亚洲一区二区| 国产精品久久久对白| 亚洲精品乱码久久久久久| 亚洲乱码国产乱码精品精可以看| 久久免费视频在线| 你懂的视频欧美| 激情亚洲一区二区三区四区| 久久精品国产亚洲aⅴ| 久久精品视频免费| 国产在线不卡视频| 久久国产精品72免费观看| 乱人伦精品视频在线观看| 亚洲成色www8888| 久久久久久久尹人综合网亚洲| 久久久夜精品| 91久久久久久久久久久久久| 欧美激情精品久久久久久蜜臀| 欧美激情一区二区三区在线视频观看 | 久久久久一本一区二区青青蜜月| 国产麻豆视频精品| 男人的天堂成人在线| 在线观看日韩国产| 欧美a级片网| 亚洲精品日产精品乱码不卡| 一区二区三区www| 国产乱码精品一区二区三区忘忧草| 亚洲欧美另类久久久精品2019| 久久久.com| 亚洲巨乳在线| 国产嫩草影院久久久久| 久久久久久久久岛国免费| 亚洲欧洲一级| 久久婷婷成人综合色| 一本色道综合亚洲| 国产婷婷色综合av蜜臀av| 另类尿喷潮videofree| 99伊人成综合| 你懂的亚洲视频| 亚洲欧美国产另类| 久热re这里精品视频在线6| 亚洲电影免费在线| 亚洲一区欧美激情| 精品成人在线视频| 国产一区二区中文字幕免费看| 麻豆成人综合网| 久久综合九色综合欧美狠狠| 国产一区二区在线免费观看| 91久久久久久久久久久久久| 日韩写真视频在线观看| 欧美激情区在线播放| 亚洲精品视频在线观看网站| 亚洲香蕉网站| 国产一区欧美日韩| 欧美日韩国产在线播放网站| 香蕉国产精品偷在线观看不卡| 久久久久九九视频| 夜久久久久久| 国内在线观看一区二区三区| 欧美日韩成人网| 美女主播一区| 久久狠狠婷婷| 亚洲私人影吧| 亚洲国产精品久久| 久久三级福利|