PAT 1032. Sharing (25)

来源:互联网 发布:怎么删除自己淘宝店铺 编辑:程序博客网 时间:2024/04/28 14:50

1032. Sharing (25)

题意:找到公共后缀起始的地方。用map记录该路径是否被访问过,flag表示是否存在公共后缀。

最后一个例子对时间卡的很紧,用cin 或 t[i].ch 可能就卡在那10ms了。

#include<cstdio>#include<algorithm>#include<map>using namespace std;const int N=100005;struct node{int id,next;}t[N],tmp;int cmp(node a,node b){return a.id<b.id;}map<int,int > m; int main(){int s1,s2,n;char ch;scanf("%d %d %d",&s1,&s2,&n);for(int i=0;i<n;i++)scanf("%d %c %d",&t[i].id,&ch,&t[i].next);sort(t,t+n,cmp);int next=s1,last=-1,flag=0;//next是物理地址while(next!=-1){m[next]++;tmp.id=next;int pos=lower_bound(t,(t+n),tmp,cmp)-t;next=t[pos].next;}next=s2;while(next!=-1){if(m[next]==0)flag=0;else{//公共部分if(flag==0)//无后缀last=next,flag=1;}tmp.id=next;int pos=lower_bound(t,(t+n),tmp,cmp)-t;next=t[pos].next;}if(flag==0)printf("-1\n");elseprintf("%05d\n",last);return 0;}


0 0
原创粉丝点击