static void remg(int n0, cgraph ** c) { /* - remove gluon issue from vertex n0 from first C-graph - 08/01/90 */ int n1; # if (CDEBLEV > DEBLEV) printf(".......RemG........%u\n",(unsigned int)n0); wrcg(*c); # endif n1 = findl(1,n0,*c); if (istadpole(n0,*c) || istadpole(n1,*c)) { (*c)->sgn=0; (*c)->gl = 0; (*c)->vl[n0-1].vt = zv; (*c)->vl[n1-1].vt = zv; # if (CDEBLEV > DEBLEV) wrcg(*c); # endif } else if((*c)->vl[n1-1].vt==qg) remqg_qg(n0,n1,c); else remqg_3g(n0,n1,c); # if (CDEBLEV > DEBLEV) fprintf(stderr,".......end RemG........\n"); # endif } /* RemG */
void duplicate(Flayer *l, Rectangle r, XftFont *f, int close) { Text *t=(Text *)l->user1; Flayer *nl = findl(t); Rune *rp; ulong n; if(nl){ flnew(nl, stgettext, l->user0, (char *)t); flinit(nl, r, f); nl->origin = l->origin; rp = (*l->textfn)(l, l->f.nchars, &n); flinsert(nl, rp, rp+n, l->origin); flsetselect(nl, l->p0, l->p1); if(close){ flclose(l); if(l==which) which = 0; }else t->nwin++; current(nl); hcheck(t->tag); } cursorswitch(cursor); }
static void remqg_qg2(int n0,int n1,cgraph* cg) { int n2; /* - remove subgraph (see figure) from C-graph - 08/01/90 */ cg->powNN_1++; /* v1 */ cg->powN--; /* v2 -->--*-- */ cg->pow2--; /* : | */ n2 = findl(2,n1,cg); /* : | */ cg->vl[n2-1].e[2] = cg->vl[n0-1].e[2]; /* v3 --<--*-- */ } /* v0 */
int computeminpos(int level) { int i,result; for(i=1,result=level;i<N;i++) { result*=10; } return findl(result); }
static void remtv(cgraph * pgl ) { /* Remove transfered vertex from all C-graphs - 06/01/90 */ int n, n1; int vt0; /* Original type */ int ee; /* v0 */ /* -->--*-->--v1 */ #if (CDEBLEV > DEBLEV) /* */ fprintf(stderr,".......RemTV........\n");/* */ #endif /* v0 */ /* .....*.....v1 */ while (findv(tv,pgl,&n) || findv(g2,pgl,&n)) { # if (CDEBLEV > DEBLEV) if (pgl != NULL) wrcg(pgl); # endif vt0 = pgl->vl[n-1].vt; pgl->vl[n-1].vt = zv; pgl->gl--; if (istadpole(n,pgl)) if (pgl->vl[n-1].e[0] != 0) pgl->powNN_1++; else pgl->powN++; else if (pgl->vl[n-1].e[0] != 0) { n1 = findl(1,n,pgl); if (pgl->vl[n1-1].vt == g2 && pgl->vl[n1-1].e[0] != pgl->vl[n-1].e[0]) { ee = pgl->vl[n1-1].e[0]; pgl->vl[n1-1].e[0] = pgl->vl[n1-1].e[1]; pgl->vl[n1-1].e[1] = ee; } else if (pgl->vl[n1-1].vt == g3) rev3g(pgl->vl[n-1].e[0],&pgl->vl[n1-1]); pgl->vl[n1-1].e[0] = pgl->vl[n-1].e[1]; } else { n1 = findl(2,n,pgl); pgl->vl[n1-1].e[2] = pgl->vl[n-1].e[2]; } } }
static void remqg_qg(int n0,int n1, cgraph ** c) { /* - remove gluon connected vertex n0 and n1 (see fugure) from first C-graph - 08/01/90 */ int n2, n5; cgraph * cg=*c; # if (CDEBLEV > DEBLEV) printf(".......RemQG-QG........%u,%u\n",(unsigned int) n0, (unsigned int) n1); # endif cg->vl[n0-1].vt = zv; cg->vl[n1-1].vt = zv; cg->gl -= 2; if (cg->vl[n0-1].e[1] == cg->vl[n1-1].e[2] && /* v1 */ cg->vl[n0-1].e[2] == cg->vl[n1-1].e[1]) /* -->--*-- */ { /* | : | */ cg->powNN_1++; /* | : | */ cg->pow2--; /* --<--*-- */ } /* v0 */ else if (cg->vl[n0-1].e[1] == cg->vl[n1-1].e[2]) remqg_qg2(n0,n1,cg); else if (cg->vl[n0-1].e[2] == cg->vl[n1-1].e[1]) remqg_qg2(n1,n0,cg); else { n2 = findl(2,n0,cg); /* v0 */ cg->vl[n2-1].e[2] = cg->vl[n1-1].e[2]; /* v2-->--*-->--v3 */ n5 = findl(2,n1,cg); /* : */ cg->vl[n5-1].e[2] = cg->vl[n0-1].e[2]; /* : */ cg->pow2--; /* v4--<--*--<--v5 */ /* v1 */ cg=addcg(c); cg->sgn*=-1; cg->powN--; cg->vl[n2-1].e[2] = cg->vl[n0-1].e[2]; cg->vl[n5-1].e[2] = cg->vl[n1-1].e[2]; } # if (CDEBLEV > DEBLEV) wrcg(cg); if (cg->next != NULL) wrcg(cg->next); # endif }
void main() { clrscr(); printf( "\n" ); input(); initialize(); while(1) { min=dmin(); visited[min]=1; flag=0; for( i = 1; i <=n; i++ ) { if((mat[min][i]>0)&&(visited[i]!=1)) { j=i; flag=1; prevdj=d[j]; if( j > 0) { if( d[j] > 0) { if(d[j]<(d[min]+mat[min][j])) d[j]=d[j]; else d[j]=(d[min]+mat[min][j]); } else d[j]=(d[min]+mat[min][j]); } if(prevdj!=d[j]) p[j]=i; } } if((flag==0)&&(i==n+1)) break; findl(); } printf( "\n RESULT : " ); for( i = 1; i <= n; i++ ) printf( "%d\t",p[i] ); getch(); }
static void remqg_3g(int n0,int n1, cgraph ** c) /* - remove gluon connected vertex n0 and n1 (see figure) from first C-graph - 08/01/90 */ { int n2, n3; /* v1 */ int en; /* v2.....*.....v3 */ cgraph * cg = *c; /* : */ /* : */ /* v3-->--*-->--v4 */ /* v0 */ # if (CDEBLEV > DEBLEV) fprintf(stderr,".......RemQG-3G........%u,%u\n", (unsigned int)n0,(unsigned int)n1); # endif rev3g(cg->vl[n0-1].e[0],&cg->vl[n1-1]); n2 = findl(2,n1,cg); if (cg->vl[n2-1].vt == g3) rev3g(cg->vl[n1-1].e[1],&cg->vl[n2-1]); cg->vl[n0-1].vt = qg; cg->vl[n0-1].e[0] = cg->vl[n2-1].e[0]; en = cg->vl[n0-1].e[2]; cg->vl[n0-1].e[2] = cg->vl[n1-1].e[0]; n3 = findl(3,n1,cg); if (cg->vl[n3-1].vt == g3) rev3g(cg->vl[n1-1].e[2],&cg->vl[n3-1]); cg->vl[n1-1].vt = qg; cg->vl[n1-1].e[0] = cg->vl[n3-1].e[0]; cg->vl[n1-1].e[1] = cg->vl[n0-1].e[2]; cg->vl[n1-1].e[2] = en; cg=addcg(c); cg->sgn*=-1; cg->vl[n0-1].e[0] = cg->next->vl[n1-1].e[0]; cg->vl[n1-1].e[0] = cg->next->vl[n0-1].e[0]; # if (CDEBLEV > DEBLEV) wrcg(cg); wrcg(cg->next); # endif } /* RemQG_3G */
static void exp3g(int n0, cgraph ** c) { int n1, n2, n4, n5; int e04, e05, e45; cgraph * cg=*c; /* expand 3G vertex (see figure) - 08/01/90 */ /* 14/03/99: Check tadpole before expanding */ # if (CDEBLEV > DEBLEV) fprintf(stderr,".......Exp3G........\n"); # endif n1 = findl(1,n0,cg); if (istadpole(n0,cg) || istadpole(n1,cg)) { cg->sgn=0; cg->gl = 0; cg->vl[n0-1].vt = zv; cg->vl[n1-1].vt = zv; # if (CDEBLEV > DEBLEV) wrcg(cg); # endif return; } n1 = findl(1,n0,cg); /* v0 v4 v5 */ n2 = findl(2,n0,cg); /* v1..*...v2 v1..*-<-*..v2 */ /* : \ / */ n4 = getv(cg); /* : -> *v0 */ e45 = ++(cg->en); /* : : */ e04 = ++(cg->en); /* v3 v3 */ cg->vl[n4-1].vt = qg; if (cg->vl[n1-1].vt == g3) rev3g(cg->vl[n0-1].e[0],&cg->vl[n1-1]); cg->vl[n4-1].e[0] = cg->vl[n1-1].e[0]; cg->vl[n4-1].e[1] = e45; cg->vl[n4-1].e[2] = e04; n5 = getv(cg); e05 = ++(cg->en); cg->vl[n5-1].vt = qg; if (cg->vl[n2-1].vt == g3) rev3g(cg->vl[n0-1].e[1],&cg->vl[n2-1]); cg->vl[n5-1].e[0] = cg->vl[n2-1].e[0]; cg->vl[n5-1].e[1] = e05; cg->vl[n5-1].e[2] = e45; rev3g(cg->vl[n0-1].e[2],&cg->vl[n0-1]); cg->vl[n0-1].vt = qg; cg->vl[n0-1].e[1] = e04; cg->vl[n0-1].e[2] = e05; cg->sgn*=-1; cg->pow2++; cg=addcg(c); /* Second term */ cg->vl[n0-1].e[1] = e05; cg->vl[n0-1].e[2] = e04; cg->vl[n4-1].e[1] = e04; cg->vl[n4-1].e[2] = e45; cg->vl[n5-1].e[1] = e45; cg->vl[n5-1].e[2] = e05; cg->sgn*=-1; # if (CDEBLEV > DEBLEV) wrcg(cg); wrcg(cg->next); fprintf(stderr,".......end Exp3G........\n"); # endif } /* Exp3G */