本文整理汇总了C++中Arc::getNumeroSommet方法的典型用法代码示例。如果您正苦于以下问题:C++ Arc::getNumeroSommet方法的具体用法?C++ Arc::getNumeroSommet怎么用?C++ Arc::getNumeroSommet使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Arc
的用法示例。
在下文中一共展示了Arc::getNumeroSommet方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
Kcore::Kcore(GrapheNonOriente* graphe, int k){
std::vector<int> degresCumulatifs;
std::vector<int> tabdegre;//tableau de degrés des sommets
for(unsigned int i=0;i<graphe->size();i++){
tabdegre.push_back(graphe->getDegre(i));
}
while(!supK(tabdegre,k)){//tant qu'il reste des degrés inférieurs à k et différents de 0
for(unsigned int i=0;i<graphe->size();i++){
if(tabdegre[i]<k && tabdegre[i]!=0){
tabdegre[i] = 0;//on passe le degré du sommet à 0 vu qu'il n'appartient pas au kcore
std::vector<Arc> arcs = graphe->getArcs(i);
for (unsigned int j=0;j<arcs.size();j++){
//on récupère les voisins et on diminuent leur degré de 1
Arc a = arcs[j];
if(tabdegre[a.getNumeroSommet()] != 0)
tabdegre[a.getNumeroSommet()]--;
}
}
}
}
//calcul degrés cumultatifs
for(unsigned int i=0;i<graphe->size();i++){
if(i == 0){
degresCumulatifs.push_back(tabdegre[i]);
}else{
degresCumulatifs.push_back(tabdegre[i] + degresCumulatifs[i-1]);
}
}
//construction de graphe
std::vector<Arc> arcsG;
std::vector<double> poids;
unsigned int nbArcs = graphe->nbArcs();
for(unsigned int numeroSommet=0; numeroSommet<graphe->size();numeroSommet++){
if(tabdegre[numeroSommet] == 0){
//On dérément le nombre d'arcs car ce sommet n'a plus d'arcs
vector<Arc> voisins = graphe->getArcs(numeroSommet);
for(unsigned int indiceVoisin=0; indiceVoisin < voisins.size(); indiceVoisin++){
if(tabdegre[(voisins[indiceVoisin]).getNumeroSommet()] != 0){
nbArcs--;
}else if(voisins[indiceVoisin].getNumeroSommet() < numeroSommet){
nbArcs--;
}
}
}else{
vector<Arc> voisins = graphe->getArcs(numeroSommet);
for(unsigned int indiceVoisin=0; indiceVoisin < voisins.size(); indiceVoisin++){
if(tabdegre[(voisins[indiceVoisin]).getNumeroSommet()] != 0){
//Si le voisin a toujours des arcs, alors on ajoute l'arc
arcsG.push_back(voisins[indiceVoisin]);
}
}
}
}
m_grapheKcore = new GrapheNonOriente(degresCumulatifs, arcsG, poids, nbArcs);
m_tabDegre = tabdegre;
}