#include<iostream>
using namespace std;
struct arcnode
{
int adjv;
arcnode *arcnext;
arcnode(int v=0,arcnode *next=NULL)
{adjv=v;arcnext=next;}
};
struct Vnode
{
int innum;
int vist;
char v;
arcnode *firstarc;
}vnode[1000];
int main()
{
int n,m,i,j;
char c;
arcnode *p,*q;
cin>>n;
while(n--)
{
cin>>m;
for(i=1;i<=m;i++)
{
cin>>vnode[i].v;
cin>>vnode[i].innum;
vnode[i].vist=0;
p=new arcnode(0,NULL);
vnode[i].firstarc=p;
p=vnode[i].firstarc;
c=getchar();
while(c!='/n')
{
if(c==' ')
;
else
{
p->arcnext=new arcnode(c-'0',NULL);
p=p->arcnext;
}
c=getchar();
}
}
int count=m;
while(count>0)
{ i=1;
for(;i<=m;i++)
{
if(vnode[i].innum==0&&vnode[i].vist==0)
{
vnode[i].vist=1;
cout<<vnode[i].v;
count--;
q=vnode[i].firstarc;
while(q)
{ if(q->adjv!=0)
vnode[q->adjv].innum--;
q=q->arcnext;
}
}
}
}
cout<<endl;
}return 0;
}
AOV 拓扑排序
最新推荐文章于 2024-04-06 22:32:38 发布