求助,洛谷评测有问题?
查看原帖
求助,洛谷评测有问题?
368027
长烟一空2222楼主2020/10/17 20:49

这是代码-

#include<bits/stdc++.h>
using namespace std;
bool way[1001][1001];
struct pp{
	int now,num,fa;
}a[10010]; 
int read(){
	int x=0,f=1;
	char ch=getchar();
	if(ch<'0'||ch>'9') {f=-1;ch=getchar();}
	while(ch<='9'&&ch>='0') {x+=ch-'0';x*=10;ch=getchar();}
	return x/10*f;
}
int bomb[11001];
bool fl;
int n,m,ans,np;
void findM(int tail){
	for(int i=1;i<=tail;i++)
		if(ans<a[i].num) {ans=a[i].num,np=i;} 
}
void write(pp o){
	if(o.fa!=-1) write(a[o.fa]);
	cout<<o.now<<' ';
	return ; 
}
int main(){
	n=read();
	for(int i=1;i<=n;i++)
		bomb[i]=read();
	for(int i=1;i<n;i++)
	for(int j=i+1;j<=n;j++){
		way[i][j]=read();
	}
	int head=0,tail=1;
	for(int k=1;k<=n;k++){
	a[tail].fa=-1;
	a[tail].now=k;
	a[tail].num=bomb[k];
		
		while(head<tail){
			head++;
			pp use=a[head];
			for(int i=1;i<=n;i++){
				if( i!=use.now && way[use.now][i] ){
					tail++;
					a[tail].fa=head;
					a[tail].now=i;
					a[tail].num=use.num+bomb[i];
				}
			}
		}
	tail++;
	}
	findM(tail);
	write(a[np]);
	cout<<endl<<ans;
	return 0;
} 

第二个点数据

3 5 10 5 1 1 1

第二个点输出

1 2 3 20

我的输出

1 2 3 20 一模一样,评测却显示第一行第一个读入为2? 望大佬解答

2020/10/17 20:49
加载中...