拓扑排序的问题,头文件topo.h
#include
usingnamespacestd;
typedefstruct
{
char*data;
int*visited;
float**edge;
intmax,size;
}Graph;
typedefstruct
{
charw1,w2;//行号,列号
intw;//权值
}RCW;
//初始化图
voidSetGraph(Graph*G,intn)
{
inti,j;
G->data=newchar[n];
G->visited=newint[n];
G->edge=(float**)malloc(n*sizeof(float*));
for(i=0;iedge=(float*)malloc(n*sizeof(float*));
}
for(i=0;ivisited=0;
for(i=0;iedge[j]=0;
G->max=n;
G->size=0;
}
//构造图
voidMakeGraph(Graph*G,RCWr[],intn,inte)
{
intm=0;
while(msize==G->max)
{
coutdata[G->size]='a'+m;//第一个点的权值加m
G->size++;
m++;
}
//插入弧
for(intp=0;pdata[k])
i=k;
if(r[p].w2==G->data[k])
j=k;
//把括号下移了!
G->edge[j]=r[p].w;
}
}
}
分 -->
|