为什么本机答案和评测机答案不一致?
查看原帖
为什么本机答案和评测机答案不一致?
260946
b4158813楼主2020/9/14 23:59
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(register int i=(a);i<=(b);++i)
typedef long long ll;
const int maxn=100005;

template<class T>
inline void read(T &x) {
	x=0;int f=0;char ch=getchar();
	while(ch<48||ch>57){f|=(ch=='-');ch=getchar();}
	while(ch>=48&&ch<=57){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
	x=f?-x:x;
	return;
}

int n,c[maxn][4],deg[maxn];
int a[3]={1,2,3},ans1,ans2;

int main(){
	read(n);
	rep(i,1,3){
		rep(j,1,n){
			read(c[i][j]);
		}
	}
	int u,v;
	rep(i,1,n-1){
		read(u),read(v);
		deg[u]++,deg[v]++;
	}
	rep(i,1,n){
		if(deg[i]>2){
			printf("-1\n");
			return 0;;
		}
	}
	
	ll ans=1ll<<60;
	do{
		ll tp=0;
		int x1=a[0],x2=a[1];
		tp+=c[x1][1]+c[x2][2];
		for(int ha,i=3;i<=n;i++){
			ha=6-x1-x2;
			tp+=c[ha][i];
			x1=x2;
			x2=ha;
		}
		if(tp<ans){
			ans=tp;
			ans1=a[0],ans2=a[1];
		}
	}while(next_permutation(a,a+3));


	printf("%lld\n%d %d ",ans,ans1,ans2);
	rep(i,3,n){
		int ha=6-ans1-ans2;
		printf("%d ",ha);
		ans1=ans2;
		ans2=ha;
	}
	puts("");
}

对于这组数据

5
3 4 2 1 2
4 2 1 5 4
5 3 2 1 1
1 2
3 2
4 3
5 4

俺本地是正确答案,但评测机确是错误答案 不知道是不是俺代码写错了。。希望大佬解答

2020/9/14 23:59
加载中...