/**
* Definition for undirected graph.
* struct UndirectedGraphNode {
* int label;
* vector<UndirectedGraphNode *> neighbors;
* UndirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution {
public:
unordered_map<UndirectedGraphNode *,UndirectedGraphNode *>mp;
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
if(node==NULL) return node;
if(mp.find(node)==mp.end())//该节点没有存储过
{
mp[node]=new UndirectedGraphNode(node->label);
for(auto x:node->neighbors)
{
(mp[node]->neighbors).push_back(cloneGraph(x));
}
}
return mp[node];
}
};