| ||||||||||
| 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 | |||||||||
顶上去,都别跟偶菜抢呀In Reply To:天啦,给偶块豆腐让偶去撞死吧,大牛请来相帮 Posted by:Pzjay at 2009-10-15 16:48:25 > 6 8 5 3 5 2 6 4
> 5 6 0 0
> Case 1 is a tree.
>
> 8 1 7 3 6 2 8 9 7 5
> 7 4 7 8 7 6 0 0
> Case 2 is a tree.
>
> 3 8 6 8 6 4
> 5 3 5 6 5 2 0 0
> Case 3 is not a tree.
> 0 0
> Case 4 is a tree.
>
> 1 1 0 0
> Case 5 is not a tree.
>
> 1 2 1 2 0 0
> Case 6 is not a tree.
>
> 1 2 2 3 4 5 0 0
> Case 7 is not a tree.
>
> 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1 0 0
> Case 8 is not a tree.
>
> 1 2 2 1 0 0
> Case 9 is not a tree.
>
> 1 2 2 3 3 1 5 6 0 0
> Case 10 is not a tree.
> -1 -1
> 请按任意键继续. . .
>
>
> 目前已知所有测试数据都过了,竟然还WA!!!这个T会卡RP的么???码子搁这,看那位大牛能检查出问题来:
> #include<iostream>
> #include<cstring>
> #include<queue>
> #include<set>
> using namespace std;
> const int nax=1000;
> int a[nax],b[nax],c[nax];
> bool matrix[nax/10][nax/10];
> int sum;//点的个数
> void bfs(int a)
> {
> queue<int>q;
> int tmp,i;
> q.push(a);
> while(!q.empty())
> {
> tmp=q.front();
> q.pop();
> for(i=0;i<sum;++i)
> {
> if(matrix[tmp][i])
> {
> matrix[tmp][i]=false;
> q.push(i);
> }
> }
> }
> }
> int main()
> {
> int edge;
> set<int>pzj;
> int m,n;
> bool is,ak;
> int root;//记录根节点
> int k=0,i,j;
> while(true)
> {
> sum=0;
> memset(matrix,false,sizeof(matrix));
> ak=true;
> pzj.clear();
> edge=0;
> is=true;
> i=0;
> memset(a,0,sizeof(a));
> memset(b,0,sizeof(b));
> memset(c,0,sizeof(c));
> scanf("%d%d",&m,&n);
> if(m==-1 && n==-1)
> break;
> if((m+n)==0)
> {
> printf("Case %d is a tree.\n",++k);
> continue;
> }
> matrix[m][n]=true;
> edge++;
> pzj.insert(m);
> pzj.insert(n);
> c[m]++;
> b[n]++;
> while(scanf("%d%d",&m,&n) && (m+n))
> {
> matrix[m][n]=true;
> edge++;
> pzj.insert(m);
> pzj.insert(n);
> c[m]++;
> if(c[m]==1)
> a[i++]=m;//保存父节点并防止重复保存
> b[n]++;
> if(b[n]>1)//出现入度大于1
> is=false;
> }
> if(!is)
> {
> printf("Case %d is not a tree.\n",++k);
> continue;
> }//满足没有节点入度大于1
> int cou=0;
> if(pzj.size()-1!=edge)
> {
> printf("Case %d is not a tree.\n",++k);
> continue;
> }
> else//满足点边关系
> {
> for(j=0;j<i;j++)
> if(b[a[j]]==0)
> {
> cou++;
> root=a[j];
> }
> }
> if(cou==1)//满足只有一个根的条件
> {
> sum=pzj.size();//点的个数
> bfs(root);//判断有无环的情况
> for(i=0;i<sum;++i)
> for(j=0;j<sum;++j)
> if(matrix[i][j])
> goto hoho;
> printf("Case %d is a tree.\n",++k);
> }
>
> else
> hoho: printf("Case %d is not a tree.\n",++k);
>
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator