我已使用地图
实施了图表map<char,vector<char> > M;
现在,我逐渐获得优势,我正在将它们推向像这样的图形
addEdge(char a,char b){
M[a].push_back(b);
}
我想找到度数为零的所有节点。什么是最有效的方法呢?
答案 0 :(得分:1)
创建一个vector<char> L
,它将存储最终节点。
L
中,请将其从L
中删除。答案 1 :(得分:0)
在由仅包含边的数据结构表示的图中,不能有零度的节点。 因此,如果您的图形由M []完全描述,则保证没有零度的节点。
答案 2 :(得分:0)
我认为如果我们采取另一张地图&#39; indegree&#39;如下面的代码所示,并增加计数,如果字符显示为边的终止端,那么我们可以找到具有indegree 0的节点。
map<char,vector<char> > M;
map<char,int> indegree;
void addEdge(char a,char b){
M[a].push_back(b);
indegree[b]++;
}
void show(){
for(map<char,vecotr<char> > :: iterator it=M.begin();it!=M.end();it++){
if(indegree[it->first]==0)
cout<<it->first<<endl;
}
}
另一种方法是预定义大小为256的数组,并按照与上面相同的步骤进行操作。
map<char,vector<char> > M;
int arr[256]={0};
void addEdge(char a,char b){
M[a].push_back(b);
arr[b]++;
}
void show(){
for(map<char,vecotr<char> > :: iterator it=M.begin();it!=M.end();it++){
if(arr[it->first]==0)
cout<<it->first<<endl;
}
}