[leetcode] 133 Clone Graph
来源:互联网 发布:黄金k线图软件 编辑:程序博客网 时间:2024/05/29 17:48
问题描述:
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 #
.
- 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 / \ \_/
代码:
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { //c++ if(node == NULL) return NULL; set<int> visited; map<int,UndirectedGraphNode*> myMap; queue<UndirectedGraphNode*> myQueue; UndirectedGraphNode *head,*p,*temp,*one; myQueue.push(node); bool isFirst = true; do { p = myQueue.front(); if(isFirst){ temp = new UndirectedGraphNode(p->label); head= temp; myMap.insert(make_pair(p->label,temp)); isFirst = false; } else temp = myMap[p->label]; vector<UndirectedGraphNode*> vec; for(int i=0; i<(p->neighbors).size(); i++){ int label =(p->neighbors)[i]->label; if(myMap.count(label)!=0) one = myMap[label]; else { one = new UndirectedGraphNode(label); myMap.insert(make_pair(label,one)); } vec.push_back(one); if(visited.count(label)==0) myQueue.push(p->neighbors[i]); } temp->neighbors = vec; myQueue.pop(); visited.insert(p->label); }while(!myQueue.empty()); return head; }
0 0
- LeetCode: Clone Graph [133]
- [leetcode 133]Clone Graph
- [leetcode] 133 Clone Graph
- LeetCode 133 Clone Graph
- leetcode || 133、Clone Graph
- Clone Graph Leetcode 133
- LeetCode(133) Clone Graph
- leetcode 133: Clone Graph
- Leetcode #133 Clone Graph
- 133 Clone Graph [Leetcode]
- LeetCode 133: Clone Graph
- Leetcode 133 Clone Graph
- Leetcode 133 Clone Graph
- LeetCode(133)Clone a Graph
- [leetcode] 133 clone graph bfs
- Leetcode NO.133 Clone Graph
- [Leetcode 133, Medium] Clone Graph
- LeetCode(133) Clone Graph
- POJ1469——COURSES(二分图最大匹配模板)
- 每日一题之二进制下1的个数
- OC高级(一)
- TCP抓包总结
- gcc的内建函数__builtin_expect
- [leetcode] 133 Clone Graph
- MFC多文档框架
- OpenGL绘制Bezier曲线
- 关于解决阿里巴巴首页“自定义内容”代码失效的问题
- 在google play上更新android版本
- android 添加单元测试配置
- JDBC如何访问数据库
- CF496D——Tennis Game(高效,模拟)
- kali linux msf easyftp