Server IP : 192.168.23.10  /  Your IP : 18.191.24.17
Web Server : Apache
System : Linux echo.premieradvertising.com 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 7 14:54:22 EST 2023 x86_64
User : rrrallyteam ( 1049)
PHP Version : 8.1.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF
Directory (0755) :  /usr/share/locale/gwi/../tem/../grb/../eu_ES/../moh/../../graphviz/gvpr/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/locale/gwi/../tem/../grb/../eu_ES/../moh/../../graphviz/gvpr/binduce
/* Given a bipartite graph, induce a non-bipartite graph.
 * argv[0]="name=value" This is used to identify the nodes used
 * to induce edges. If aget(n,name) == value, 
 *  if deg(n) == 1, delete
 *  if deg(n) == 2, delete and connect to neighbor with edge
 *  if deg(n) > 2, delete and add edge between all pairs of neighbors
 *  Add weights to edge.
 */
BEGIN{
  int i, cnt;
  int wt[edge_t];
  string values[int];
  node_t nbrs[int];
  edge_t e;
  tokens(ARGV[0],values,"=");
  string aname = values[0];
  string value = values[1];
  printf(2, "%s=%s\n", aname, value);
}
N[aget($,aname)==value] {
  if ($.degree > 1) {
    cnt = 0;
    for (e = fstedge($); e; e = nxtedge(e, $))
      nbrs[cnt++] = opp(e,$);
    for (i = 0; i < cnt-1; i++) {
      if ((e = isEdge(nbrs[i],nbrs[i+1],"")) != NULL) {
        wt[e] += 1;
      }
      else if ($G.directed && (e = isEdge(nbrs[i+1],nbrs[i],""))) {
        wt[e] += 1;
      }
      else if (nbrs[i] != nbrs[i+1]) { // avoid loops
        e = edge(nbrs[i],nbrs[i+1],"");
        wt[e] = 1;
      }
    }
    unset(nbrs);
  }
  delete($G,$);
}
END_G{
  for (wt[e]) {
    e.multiplicity = sprintf ("%d", wt[e]);
  }
}