• <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>
            posts - 18,  comments - 5,  trackbacks - 0

            一、題目描述

            Description

            Consider the two networks shown below. Assuming that data moves around these networks only between directly connected nodes on a peer-to-peer basis, a failure of a single node, 3, in the network on the left would prevent some of the still available nodes from communicating with each other. Nodes 1 and 2 could still communicate with each other as could nodes 4 and 5, but communication between any other pairs of nodes would no longer be possible.

            Node 3 is therefore a Single Point of Failure (SPF) for this network. Strictly, an SPF will be defined as any node that, if unavailable, would prevent at least one pair of available nodes from being able to communicate on what was previously a fully connected network. Note that the network on the right has no such node; there is no SPF in the network. At least two machines must fail before there are any pairs of available nodes which cannot communicate.

            Input

            The input will contain the description of several networks. A network description will consist of pairs of integers, one pair per line, that identify connected nodes. Ordering of the pairs is irrelevant; 1 2 and 2 1 specify the same connection. All node numbers will range from 1 to 1000. A line containing a single zero ends the list of connected nodes. An empty network description flags the end of the input. Blank lines in the input file should be ignored.

            Output

            For each network in the input, you will output its number in the file, followed by a list of any SPF nodes that exist.

            The first network in the file should be identified as "Network #1", the second as "Network #2", etc. For each SPF node, output a line, formatted as shown in the examples below, that identifies the node and the number of fully connected subnets that remain when that node fails. If the network has no SPF nodes, simply output the text "No SPF nodes" instead of a list of SPF nodes.

            Sample Input

            1 2
            5 4
            3 1
            3 2
            3 4
            3 5
            0
            1 2
            2 3
            3 4
            4 5
            5 1
            0
            1 2
            2 3
            3 4
            4 6
            6 3
            2 5
            5 1
            0
            0

            Sample Output

            Network #1
            SPF node 3 leaves 2 subnets
            Network #2
            No SPF nodes
            Network #3
            SPF node 2 leaves 2 subnets
            SPF node 3 leaves 2 subnets


            二、分析
                  用DFS解決問題,詳細算法:割點與橋
            三、代碼

             1#include<iostream>
             2#include<list>
             3using namespace std;
             4int t;
             5int v1, v2;
             6list<int> g[1001];
             7bool flag;
             8int root;
             9int counter;
            10bool spf[1001];
            11int low[1001], lab[1001];
            12bool visit[1001];
            13void dfs(int u, int fa)
            14{
            15    low[u] = lab[u] = counter++;
            16    list<int>::iterator it;
            17    int counter = 0;
            18    for(it = g[u].begin(); it != g[u].end(); it++)
            19    {
            20        int v = *it;
            21        if(!lab[v])
            22        {
            23            counter++;
            24            dfs(v, u);
            25            low[u] = min(low[u], low[v]);
            26            if((u==root && counter>=2|| (u!=root && low[v]>=lab[u]))
            27                spf[u] = flag = true;
            28        }

            29        else if(v != fa)
            30            low[u] = min(low[u], lab[v]);
            31    }

            32}

            33void find(int u)
            34{
            35    visit[u] = true;
            36    list<int>::iterator it;
            37    for(it = g[u].begin(); it != g[u].end(); it++)
            38        if(!visit[*it])
            39            find(*it);
            40}

            41int main()
            42{
            43    t = 1;
            44    while(1)
            45    {
            46        scanf("%d"&v1);
            47        if(v1 == 0break;
            48        for(int i=1; i<=1000; i++)
            49            g[i].clear();
            50        memset(spf, 0sizeof spf);
            51        memset(low, 0sizeof low);
            52        memset(lab, 0sizeof lab);
            53        while(v1 != 0)
            54        {
            55            scanf("%d"&v2);
            56            g[v1].push_back(v2);
            57            g[v2].push_back(v1);
            58            root = v1;
            59            scanf("%d"&v1);
            60        }

            61        counter = 1;
            62        flag = false;
            63        dfs(root, -1);
            64        printf("Network #%d\n", t++);
            65        if(flag)
            66        {
            67            for(int i=1; i<=1000; i++)
            68            {
            69                if(!spf[i]) continue;
            70                int cnt = 0;
            71                memset(visit, 0sizeof visit);
            72                visit[i] = true;
            73                list<int>::iterator it;
            74                for(it = g[i].begin(); it != g[i].end(); it++)
            75                    if(!visit[*it])
            76                    {
            77                        cnt++;
            78                        find(*it);
            79                    }

            80                    printf("  SPF node %d leaves %d subnets\n", i, cnt);
            81            }

            82        }

            83        else
            84            printf("  No SPF nodes\n");
            85        printf("\n");
            86    }

            87}
            posted on 2009-07-04 16:12 Icyflame 閱讀(1182) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
            久久久久亚洲AV无码麻豆| 国产精品成人99久久久久 | 色诱久久久久综合网ywww| 久久久久久国产精品美女| 国产激情久久久久久熟女老人| 亚洲午夜精品久久久久久浪潮| 日韩电影久久久被窝网| 欧美日韩成人精品久久久免费看| 久久99精品久久久久久水蜜桃| 久久婷婷人人澡人人| 99久久99久久久精品齐齐| 久久亚洲AV成人无码软件| 久久发布国产伦子伦精品 | AV狠狠色丁香婷婷综合久久| 亚洲精品tv久久久久| 久久久久久精品免费免费自慰| 看久久久久久a级毛片| 久久精品国产亚洲精品| 91久久精品无码一区二区毛片| 国产午夜精品久久久久九九电影 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 成人综合伊人五月婷久久| 久久精品国产亚洲AV麻豆网站| 麻豆一区二区99久久久久| 久久久久精品国产亚洲AV无码| 久久综合噜噜激激的五月天| 少妇人妻综合久久中文字幕| 久久精品日日躁夜夜躁欧美| 人妻无码精品久久亚瑟影视| 99久久国产亚洲高清观看2024| 欧美牲交A欧牲交aⅴ久久 | 亚洲精品无码成人片久久| 久久亚洲精品无码播放| 国产无套内射久久久国产| 韩国三级大全久久网站| 国产成年无码久久久久毛片| 久久综合给合久久国产免费| 久久久久成人精品无码中文字幕 | 国产精品美女久久久久网| 色婷婷综合久久久久中文 | 国产精品综合久久第一页|