Clone Graph
来源:互联网 发布:音视频编辑软件 编辑:程序博客网 时间:2024/06/04 01:21
Clone an undirected graph. Each node in the graph contains a label
and a list of itsneighbors
.
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#
.
- First node is labeled as
0
. Connect node0
to both nodes1
and2
. - Second node is labeled as
1
. Connect node1
to node2
. - Third node is labeled as
2
. Connect node2
to node2
(itself), thus forming a self-cycle.
Visually, the graph looks like the following:
1 / \ / \ 0 --- 2 / \ \_/
Solution:
/** * Definition for undirected graph. * struct UndirectedGraphNode { * int label; * vector<UndirectedGraphNode *> neighbors; * UndirectedGraphNode(int x) : label(x) {}; * }; */class Solution {public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if(node == NULL) return node; queue<UndirectedGraphNode*> q; unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> um; q.push(node); UndirectedGraphNode *clone = new UndirectedGraphNode(node->label); um[node] = clone; while(!q.empty()) { UndirectedGraphNode *next = q.front(); q.pop(); for(int i = 0; i < next->neighbors.size(); ++i) { if(!um.count(next->neighbors[i])) { UndirectedGraphNode *nb = new UndirectedGraphNode(next->neighbors[i]->label); um[next->neighbors[i]] = nb; um[next]->neighbors.push_back(nb); q.push(next->neighbors[i]); } else um[next]->neighbors.push_back(um[next->neighbors[i]]); } } return um[node]; }};
0 0
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- 15
- Lisa随手记 1.8 版 发布
- RandomAttack algorithm
- HTML表格
- @autorelease
- Clone Graph
- 15
- iOS开发-UIApplication和delegate & iOS程序的启动原理
- sublime text 3更改已有的build system(debian jessie)
- 【转自mos文章】检查selinux状态的方法
- ARC的基本使用
- hnu_13268 Navigition Problem
- 【HDU】3572 Task Schedule (最大流 ISAP算法)
- Redis 管道pipeline