求助90分,最后一个点WA了
  • 板块P5060 旅行
  • 楼主zxw666
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/9/28 22:20
  • 上次更新2023/11/4 05:24:48
查看原帖
求助90分,最后一个点WA了
144820
zxw666楼主2021/9/28 22:20

RT,萌新求助

#include<bits/stdc++.h>
#define CSP RP++ SCORE++
#define NOIP RP++ SCORE++
#define AHOI RP+ SCORE++
#define NOI RP++ SCORE++
#define IOI RP++ SCORE++
#define int long long
//#define ld long double
//#define maxn(a,b) (a>b?a:b)
//#define minx(a,b) (a<b?a:b)
//#define s(a) scanf("%d",&a)
//#define sd(a,b) scanf("%d %d",&a,&b)
//#define p(a) printf("%d",a)
//#define pk(a) printf("%d ",a)
//#define ph(a) printf("%d\n",a)
using namespace std;
const int N=2e6+5e5+10;
int xd,n,m,k,d,res,u,v,w,x,len,r,c[N],f[N],p[N],we[N],pp,to[N],a[N],h[N],g[N];
//inline int read() {
//	int x=0,f=1;
//	char ch=getchar();
//	while(ch<'0'||ch>'9') {
//		if(ch=='-')
//			f=-1;
//		ch=getchar();
//	}
//	while(ch>='0'&&ch<='9') {
//		x=(x<<1)+(x<<3)+(ch^48);
//		ch=getchar();
//	}
//	return x*f;
//}
void read(int &x) {
	char c=getchar();
	int t=1;x=0;
	while(c<'0'||c>'9') {
		if(c=='-')
			t=-t;
		c=getchar();
	}
	while(c>='0'&&c<='9')
		x=(x<<1)+(x<<3)+(c-48),c=getchar();
	x*=t;
}
inline void write(int x) {
	if(x<0)
		putchar('-'),x=-x;
	if(x>9)
		write(x/10);
	putchar(x%10+'0');
}
inline void lol(int x,int y) {
	swap(p[we[x]],p[we[y]]);
	swap(we[x],we[y]);
}
inline void p1(int i) {
	i=p[i];
	while(f[we[i]]<f[we[i>>1]])
		lol(i,i>>1),i>>=1;
}
inline void p2(int i) {
	lol(i,len);
	we[len--]=n+1;;
	while((i<<1)<=len) {
		if(f[we[i]]<=f[we[i<<1]]&&f[we[i]]<=f[we[(i<<1)+1]])
			break;
		if(f[we[i<<1]]<f[we[(i<<1)+1]])
			lol(i,i<<1),i<<=1;
		else
			lol(i,(i<<1)+1),i=(i<<1)+1;
	}
}
inline void add(int x,int y,int z) {
	pp++,to[pp]=y;
	a[pp]=z,g[pp]=h[x];
	h[x]=pp;
}
void print(int x) {
	if(!c[x]) {
		write(x);
		return;
	}
	print(c[x]);
	putchar('-'),putchar('>');
	write((x-1)%xd+1);
}
signed main() {
	read(xd),read(m),read(k),read(d),read(res);
	n=xd*k;
	for(int i=1; i<=m; i++)
		read(u),read(v),read(w),add(u,v,w);
	for(int i=1; i<=n+1; i++)
		f[i]=2333333;
	f[d]=0,len=n;
	for(int i=1; i<=n; i++)
		we[i]=p[i]=i;
	p1(d);
	for(int i=1; i<=n; i++) {
		x=we[1];
		if(x==res)
			break;
		if(f[x]==2333333)
			return puts("jjc fails in travelling"),0;
		p2(1);
		for(int p=h[(x-1)%xd+1]; p; p=g[p]) {
			r=f[x]+a[p];
			w=to[p]+xd*(r%k);
			if(f[w]>r)
				f[w]=r,c[w]=x,p1(w);
		}
	}
	write(f[res]);
	puts("");
	print(res);
	return 0;
}

错误信息:

Wrong Answer. wrong answer On line 1 column 1, read j, expected 2.

貌似是“jjc fails in travelling”的问题,救救孩子吧

2021/9/28 22:20
加载中...