16 7 00 30 41 41 52 32 43 5Example Output
0 3 4 2 5 1#include<stdio.h>#include<string.h>#include<stdlib.h>#define maxn 100typedef struct node{ int data; struct node * next;}map;map * tu[maxn];int book[maxn];int queue[maxn];int num[maxn];int top,front,rear;void sort(int k){ int i,tmp; map * p, *q; for(i=0;i<k;i++) { p=tu[i]; if(!p||!p->next) continue; for(;p;p=p->next) { q=p->next; for(;q;q=q->next) { if(p->data > q->data) { tmp=p->data; p->data=q->data; q->data=tmp; } } } }}void bfs(int x){ int i,j; map * p; book[x]=1; rear++; queue[rear]=x; while(front!=rear) { front++; i=queue[front]; num[++top]=i; p=tu[i]; while(p) { j=p->data; if(!book[j]) { book[j]=1; rear++; queue[rear]=j; } p=p->next; } }}int main(){ int i,n,k,m,t,u,v; map *p; scanf("%d",&n); while(n--) { top=-1; front=rear=0; memset(book,0,sizeof(book)); scanf("%d%d%d",&k,&m,&t); for(i=0;i<k;i++) { tu[i]=NULL; } while(m--) { scanf("%d%d",&u,&v); if(!tu[u]) { p=(map *)malloc(sizeof(tu)); p->data=v; p->next=NULL; tu[u]=p; } else { p=(map *)malloc(sizeof(tu)); p->data=v; p->next=tu[u]->next; tu[u]->next=p; } if(!tu[v]) { p=(map *)malloc(sizeof(tu)); p->data=u; p->next=NULL; tu[v]=p; } else { p=(map *)malloc(sizeof(tu)); p->data=u; p->next=tu[v]->next; tu[v]->next=p; } } sort(k); bfs(t); for(i=0;i<=top;i++) { if(i!=top) { printf("%d ",num[i]); } else { printf("%d/n",num[i]); } } } return 0;}
新闻热点
疑难解答