| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
DFS嘛,又错哪了??好心人看一下!#include<stdio.h>
#define MAX 20
struct SPAM
{
int p;
int T1,T2;
char A1[20];
char A2[20];
char A3[20];
}msg[100];
int nmsg;
int matrix[MAX+1][MAX+1];
int visited[MAX+1];
int N;
char name[21][21];//begin from 1;
int init()
{
int i,j,t;
scanf("%d",&N);
if(N==0)
return 0;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
matrix[i][j]=0;
for(i=1;i<=N;i++)
{
while(1)
{
scanf("%d",&t);
if(t==0)
break;
matrix[i][t]=1;
}
}
for(i=0;;i++)
{
scanf("%d",&t);
if(t==0)
break;
msg[i].p=t;
scanf("%d %d %s %s %s",&msg[i].T1,&msg[i].T2,msg[i].A1,msg[i].A2,msg[i].A3);
}
nmsg=i;
for(i=1;i<=N;i++)
scanf("%s",name[i]);
return 1;
}
int count(int p)
{
int i,j;
i=0;
for(j=1;j<=N;j++)
if(matrix[p][j])
i++;
return i;
}
int firstadjvex(int u)
{
int j;
for(j=1;j<=MAX;j++)
if(matrix[u][j])
return j;
return -1;
}
int nextadjvex(int u,int w)
{
int j;
for(j=w+1;j<=MAX;j++)
if(matrix[u][j])
return j;
return -1;
}
void DFS(int v)
{
int w;
visited[v]=1;
for(w=firstadjvex(v);w>=0;w=nextadjvex(v,w))
if(!visited[w])
DFS(w);
}
void process(int num,int p)
{
int temp,i;
for(i=1;i<=N;i++)
visited[i]=0;
DFS(msg[num].p);
if(visited[p]==0)
temp=0;
else
temp=count(p);
if(temp<msg[num].T1)
printf("%s ",msg[num].A1);
else if(temp>=msg[num].T1&&temp<msg[num].T2)
printf("%s ",msg[num].A2);
else printf("%s ",msg[num].A3);
}
main()
{
int k,l;
while(init())
{
for(k=1;k<=N;k++)
{
printf("%s: ",name[k]);
for(l=0;l<=nmsg;l++)
process(l,k);
printf("\n");
}
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator