zoukankan      html  css  js  c++  java
  • Clone Graph

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.


    OJ's undirected graph serialization:

    Nodes are labeled uniquely.

    We use # as a separator for each node, and , as a separator for node label and each neighbor of the node.

    As an example, consider the serialized graph {0,1,2#1,2#2,2}.

    The graph has a total of three nodes, and therefore contains three parts as separated by #.

    1. First node is labeled as 0. Connect node 0 to both nodes 1 and 2.
    2. Second node is labeled as 1. Connect node 1 to node 2.
    3. Third node is labeled as 2. Connect node 2 to node 2 (itself), thus forming a self-cycle.

    Visually, the graph looks like the following:

           1
          / 
         /   
        0 --- 2
             / 
             \_/
    思路:
    思路类似上题,用一个map来保存新旧graph节点的对应关系
    代码:
     1     UndirectedGraphNode *clone(UndirectedGraphNode *node, map<int,UndirectedGraphNode*> &table)
     2     {
     3         if(node==NULL)
     4             return NULL;
     5             
     6         if(table.find(node->label)!=table.end())
     7             return table[node->label];
     8         
     9         UndirectedGraphNode *newnode=new UndirectedGraphNode(node->label);
    10         table[newnode->label]=newnode;
    11 
    12         for(int i=0;i<node->neighbors.size();i++)
    13         {
    14             UndirectedGraphNode *neighbor=clone(node->neighbors[i],table);
    15             newnode->neighbors.push_back(neighbor);
    16         }
    17         
    18         return newnode;
    19     }
    20 
    21     UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
    22         // Note: The Solution object is instantiated only once and is reused by each test case.
    23         //keep a hash table to check whether this node is visited or not
    24         map<int,UndirectedGraphNode*> visitTable;
    25         return clone(node,visitTable);
    26     }
  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3407231.html
Copyright © 2011-2022 走看看