您的位置:首页 > 其它

1032. Sharing (25)

2016-10-31 17:35 260 查看
题目:1032. Sharing (25)

注意后面输出即可

#include <stdio.h>// 更新于2017/5/20
struct node
{
char data;
int next;
}node[100000];
int GetListLength(int head)
{
int cnt=0,p=head;
while(p!=-1)
{
++cnt;
p=node[p].next;
}
return cnt;
}
void update(int *h,int cnt)
{
while(cnt--) *h=node[*h].next;
}
int main()
{
int xhead,yhead,n;
scanf("%d %d %d",&xhead,&yhead,&n);
int x=xhead,y=yhead;
for(int i=0;i<n;++i)
{
int add,next;
char data;
scanf("%d %c %d",&add,&data,&next);
node[add].data=data;
node[add].next=next;
}
int lenx=GetListLength(xhead);
int leny=GetListLength(yhead);
lenx<leny?update(&y,leny-lenx):update(&x,lenx-leny);
while(x!=y)
{
x=node[x].next;
y=node[y].next;
}
if(x==-1)printf("-1");
else printf("%05d",x);
return 0;
}


分割线——————————–

以前的代码

#include <stdio.h>
struct node
{
char data;
int next;
int xprior;
int yprior;
}node[100000];
int main()
{
int xhead,yhead,n;
scanf("%d %d %d",&xhead,&yhead,&n);
int i;
for(i=0;i<n;i++)
{
int curadd,curnext;
char curdata;
scanf("%d %c %d",&curadd,&curdata,&curnext);
node[curadd].data=curdata;
node[curadd].next=curnext;
}
int x=xhead,y=yhead;
int prxadd=-2,xtail;
while(x!=-1)
{
node[x].xprior=prxadd;
prxadd=x;
if(node[x].next==-1)
xtail=x;
x=node[x].next;
}
int pryadd=-2,ytail;
while(y!=-1)
{
node[y].yprior=pryadd;
pryadd=y;
if(node[y].next==-1)
ytail=y;
y=node[y].next;
}
x=xtail;y=ytail;
while(node[x].xprior!=-2&&node[y].yprior!=-2)
{
if(x!=y)break;
x=node[x].xprior;
y=node[y].yprior;
}
if(node[x].xprior==-2)
printf("%05d",x);
else if(node[y].yprior==-2)
printf("%05d",y);
else
if(node[x].next==-1)
printf("-1");
else
printf("%05d",node[x].next);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: