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

poj 1984 Navigation Nightmare 并查集

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

#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];//因為方向逆過來了,所以是減去
        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 閱讀(971) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構

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

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久精品国产91久久性色| 欧美成人蜜桃| 美女在线一区二区| 91久久精品国产91性色| 亚洲国产女人aaa毛片在线| 欧美一区二区在线视频| 国产精品一区二区久久久久| 久久超碰97中文字幕| 午夜国产精品影院在线观看 | 99国产精品自拍| 亚洲国产影院| 欧美日韩国产免费| 中文网丁香综合网| 亚洲小视频在线观看| 国产精品综合久久久| 久久久av水蜜桃| 久久另类ts人妖一区二区| 欧美大片国产精品| 一本久道综合久久精品| 99re6热在线精品视频播放速度| 欧美视频免费| 久久av红桃一区二区小说| 久久国产精品毛片| 亚洲欧美成人| 午夜日韩视频| 精久久久久久久久久久| 欧美激情一区| 欧美日韩一区二区三区在线观看免| 亚洲综合大片69999| 亚洲欧美福利一区二区| 欲香欲色天天天综合和网| 欧美黄色aaaa| 欧美午夜不卡在线观看免费 | 欧美高清不卡| 欧美区高清在线| 亚洲欧美日韩在线综合| 欧美在线不卡| 在线观看欧美一区| 亚洲麻豆视频| 国产午夜亚洲精品羞羞网站 | 午夜国产精品影院在线观看| 亚洲电影第三页| 亚洲靠逼com| 国产日韩欧美一二三区| 欧美国内亚洲| 国产精品久久福利| 免费不卡视频| 欧美亚洲成人网| 久久久久久综合网天天| 麻豆freexxxx性91精品| 亚洲免费伊人电影在线观看av| 欧美中日韩免费视频| 日韩亚洲不卡在线| 欧美一二三视频| 亚洲美女区一区| 午夜精品一区二区在线观看| 亚洲三级免费| 西西人体一区二区| 亚洲精品日产精品乱码不卡| 亚洲自拍电影| 亚洲欧洲偷拍精品| 午夜免费日韩视频| 99国产精品自拍| 久久精品一区二区三区中文字幕| 一本一本大道香蕉久在线精品| 欧美一区二区在线观看| 亚洲午夜未删减在线观看| 久久人人看视频| 亚洲男女自偷自拍图片另类| 美女视频黄a大片欧美| 午夜久久久久久久久久一区二区| 免费视频一区二区三区在线观看| 欧美一区二区成人6969| 欧美经典一区二区三区| 久久久久免费观看| 国产精品久久午夜夜伦鲁鲁| 欧美午夜精品久久久久久浪潮| 亚洲欧美一区二区激情| 欧美成年人视频| 久久久久久久网站| 国产精品美女主播| 亚洲欧洲日本国产| 尤物视频一区二区| 午夜亚洲福利| 亚洲视频第一页| 欧美1区2区3区| 久久婷婷蜜乳一本欲蜜臀| 欧美日韩午夜剧场| 欧美成人精品三级在线观看| 国产日韩精品久久| 中文在线一区| 9l国产精品久久久久麻豆| 久久一区亚洲| 久久亚洲欧美| 国产亚洲女人久久久久毛片| 国产精品99久久久久久www| 亚洲看片免费| 久久久久国产一区二区三区| 久久精品91| 国产精品av免费在线观看| 亚洲精品自在在线观看| 亚洲人体1000| 久久精品99国产精品酒店日本| 欧美在线视频在线播放完整版免费观看| 欧美日韩卡一卡二| 亚洲精品免费在线播放| 亚洲国产精品久久| 久久天天躁狠狠躁夜夜av| 久久精品国产第一区二区三区最新章节| 国产精品成人国产乱一区| 99热精品在线观看| 亚洲视频成人| 欧美三级不卡| 夜久久久久久| 亚洲性xxxx| 国产精品v欧美精品∨日韩| 亚洲伦理一区| 亚洲视频第一页| 欧美午夜精品电影| 亚洲一区免费| 香蕉久久一区二区不卡无毒影院 | 在线成人中文字幕| 久久av在线看| 久久综合给合久久狠狠色| 国产亚洲精品久久久久婷婷瑜伽| 亚洲永久在线| 亚洲欧美在线免费观看| 国产精品亚洲综合久久| 亚洲欧美国产77777| 在线观看中文字幕亚洲| 久久亚洲二区| 免费成人av| 亚洲激情一区二区| 欧美国产日本| 日韩亚洲欧美精品| 欧美视频日韩视频| 欧美伊人久久久久久久久影院| 国产日本欧美视频| 久久久国际精品| 欧美va亚洲va国产综合| 亚洲精品激情| 欧美精品一区二区三区四区 | 国产精品免费久久久久久| 在线中文字幕一区| 久久大香伊蕉在人线观看热2| 韩国av一区二区| 麻豆久久久9性大片| 亚洲精品老司机| 亚洲欧美日韩国产一区二区| 国产麻豆综合| 久久久综合香蕉尹人综合网| 亚洲福利视频一区二区| 在线亚洲一区观看| 国产精品私房写真福利视频| 欧美在线视频网站| 亚洲风情在线资源站| 亚洲字幕在线观看| 好吊日精品视频| 老司机午夜精品视频在线观看| 亚洲日本视频| 欧美亚洲综合另类| 在线看国产日韩| 欧美日韩成人在线| 小辣椒精品导航| 欧美激情亚洲一区| 亚洲欧美中日韩| 尤物九九久久国产精品的特点| 欧美日韩国产片| 性久久久久久久| 欧美激情偷拍| 午夜精品久久久久久久久| 尤物99国产成人精品视频| 欧美日本不卡| 免费91麻豆精品国产自产在线观看 | 久久黄金**| 亚洲级视频在线观看免费1级| 午夜久久美女| 亚洲茄子视频| 国产精品综合网站| 欧美wwwwww| 一本色道久久综合亚洲精品不卡| 欧美自拍偷拍| 亚洲精品视频二区| 国产欧美在线观看| 欧美精品aa| 久久国产精品久久w女人spa| 亚洲精品视频免费| 久久噜噜噜精品国产亚洲综合 | 亚洲国产一区二区三区在线播| 欧美影院一区| 亚洲精选在线| 激情久久久久久久| 国产精品成人免费精品自在线观看| 久久亚洲综合色| 亚洲网站在线| 亚洲国产天堂久久综合|