void articulation(int v) { visit[v]=true; predfn++; discover[v]=Back[v]=predfn; for(int i=0; i<Graph[v].size(); i++) { int w=Graph[v][i]; if(!visit[w]) { articulation(w); Back[v]=min(Back[v],Back[w]); if(Back[w]>=discover[v]&&v!=source) { arti[v]=true; } else if(v==source) { child_of_root++; if(child_of_root==2) { arti[v]=true; } } } else { Back[v]=min(Back[v],discover[w]); } } }
void main(void) { clrscr(); freopen("arti.in", "r", stdin); int i, j; read(); root=1 ; printf("\n"); articulation(root); printart(root); }
std::vector<NamedAttack> get_attacks(std::string file) { std::string line; std::ifstream fha; std::vector<NamedAttack> articulations; fha.open (file, std::ios::in); if (fha.is_open()) { while (std::getline(fha, line)) { articulations.push_back(articulation(line)); } fha.close(); return articulations; } else { std::cout << "ERROR UNABLE TO OPEN FILE-open_attack" << std::endl; return articulations; } }
int main() { graphm g; g=graphm_vide(2); sommet s1=0,s2=1,s3=2; //g=ajout_arete(s1,s1,g); g=ajout_arete(s1,s2,g); g=ajout_arete(s2,s3,g); g=ajout_arete(s1,s3,g); print_graphm(g); //g=ajout_sommet(3,g); //g=ajout_sommet(4,g); //g=ajout_sommet(5,g); //g=ajout_sommet(6,g); //printf("ffffffff%d\n",g.n); //g=ajout_arete(5,6,g); //g=ajout_arete(3,4,g); //print_graphm(g); //g=ajout_arete(3,s2,g); print_graphm(g); //printf("%d",degre(1,g)); //adjacents(1,g); //g=supp_sommet(s1,g); //print_graphm(g); //g=supp_arete(s2,3,g); //print_graphm(g); //profondeur2(g); //print_coulors(g); //print_graphm(g); g=connexe(g); print_coulors(g); //printf(" %d \n",articulation(g)); //printf(" %d \n",articulation(g)); articulation(g); //print_graphm(g); //print_coulors(g); return 0; }
int main () { int a[100][100]; int n; scanf ("%d", &n); int i, j; for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { scanf ("%d", &a[i][j]); } } int visit[100]; for (i = 1; i <= n; i++) { visit[i] = 1; } articulation (a, visit, n); printf ("\n"); return 0; }
int main() { int i; static char s[MAXS+3]; while(1) { fgets(s,MAXS,stdin); sscanf(s,"%d",&n); if(!n) break; memset(g,0,sizeof(g)); ne=0; while(1) { fgets(s,MAXS,stdin); an=sscanf(s,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9], &a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17],&a[18],&a[19], &a[20],&a[21],&a[22],&a[23],&a[24],&a[25],&a[26],&a[27],&a[28],&a[29], &a[30],&a[31],&a[32],&a[33],&a[34],&a[35],&a[36],&a[37],&a[38],&a[39], &a[40],&a[41],&a[42],&a[43],&a[44],&a[45],&a[46],&a[47],&a[48],&a[49], &a[50],&a[51],&a[52],&a[53],&a[54],&a[55],&a[56],&a[57],&a[58],&a[59], &a[60],&a[61],&a[62],&a[63],&a[64],&a[65],&a[66],&a[67],&a[68],&a[69], &a[70],&a[71],&a[72],&a[73],&a[74],&a[75],&a[76],&a[77],&a[78],&a[79], &a[80],&a[81],&a[82],&a[83],&a[84],&a[85],&a[86],&a[87],&a[88],&a[89], &a[90],&a[91],&a[92],&a[93],&a[94],&a[95],&a[96],&a[97],&a[98],&a[99], &a[100],&a[101],&a[102],&a[103],&a[104],&a[105],&a[106],&a[107],&a[108],&a[109]); if(an==1 && !a[0]) break; a[0]--; for(i=1;i<an;i++) { a[i]--; if(!g[a[0]][a[i]]) { g[a[0]][a[i]]=g[a[i]][a[0]]=1; from[ne]=a[0]; to[ne++]=a[i]; from[ne]=a[i]; to[ne++]=a[0]; } } } countingsort(); articulation(0); printf("%d\n",acn); } return 0; }
void articulation(int u) { int v; edge e; int x; status[u]=visiting; discover[u]=finish[u]=++time; //for(v=1; v<=n; v++) //if(adj[u][v]==adjacent) x=NodeHead[u]; while(x!=NIL) { v=EdgeList[x].dst; for(v=1; v<=n; v++){ if(parent[u]!=v && discover[v]<discover[u]) { e.u=u; e.v=v; push(e); } if(status[v]==notvisited) { parent[v]=u; articulation(v); if(finish[v]>=discover[u]) { point[u]+=1; getcomp(u, v); } finish[u]=min(finish[u], finish[v]); } else if(parent[u]!=v) x=EdgeList[x].next; finish[u]=min(finish[u], discover[v]); }} status[u]=visited; }