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 |
Re:没这回事In Reply To:传送的位置有问题! Posted by:55226 at 2014-10-22 07:48:30 没这回事!我代码AC了,但是不用考虑传送到地图外的点 核心建图如下 void add(rec x,rec y){ mp[m1].x=x.id,mp[m1].y=y.id; mp[m1].next=h[x.id]; h[x.id]=m1++; } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ char c; scanf("%c",&c); if(c>='0' && c<='9'){ map[i][j][0]=c-'0'; map[i][j][1]=++n1; node[n1].x=i,node[n1].y=j; node[n1].id=n1,node[n1].v=c-'0'; } else if(c=='#') map[i][j][0]=-1; else if(c=='*'){ map[i][j][0]=0; map[i][j][1]=++n1; node[n1].x=i,node[n1].y=j; node[n1].id=n1,node[n1].v=0; K[++k]=n1; } } scanf("\n"); } memset(h,0xff,sizeof(h)); for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(map[i][j][0]>=0){ if(map[i+1][j][0]>=0 && i+1<n) add(node[map[i][j][1]],node[map[i+1][j][1]]); if(map[i][j+1][0]>=0 && j+1<m) add(node[map[i][j][1]],node[map[i][j+1][1]]); } for(int i=1;i<=k;i++){ int x1,y1; scanf("%d%d",&x1,&y1); if(map[x1][y1][0]>=0) add(node[K[i]],node[map[x1+y1/10][y1%10][1]]); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator