求助,测评姬闹脾气了
查看原帖
求助,测评姬闹脾气了
128451
x_miracle楼主2020/7/9 01:26

这是我的代码。。。

#include <bits/stdc++.h>
#define MAXN 510
#define MAX 0x3f3f3f3f
using namespace std;
int ori=1,node;
//ori 起点   node 节点数 
int a[5005];		
//存输入 
int dis[MAXN],g[MAXN][MAXN];
bool vis[MAXN]; 
void init()
{
	memset(vis,0,sizeof(vis));
	memset(dis,0,sizeof(dis));
	vis[ori]=1;
	for(int i=1;i<=node;++i)		dis[i] = (i == ori ? 0 : g[ori][i]);
}
void Dijkstra()
{
	int k;
	init();
	for(int i=1;i<=node-2;++i)
	{
		int m=MAX;
		for(int j=1;j<=node;++j)
		{
			if(dis[j]<m && vis[j]==0)
			{m=dis[j];	k=j;}
		}
		if(m==MAX)		break;
		vis[k]=1;
		for(int j=1;j<=node;++j)
			if(dis[k]+g[k][j]<dis[j])
				dis[j]=dis[k]+g[k][j];	
	}
	return ;
}
int main()
{
	int edge;
	scanf("%d%d",&edge,&node);
	for(int i=1;i<=node;++i)
		for(int j=1;j<=node;++j)
			g[i][j]=MAX;
	for(int i=1;i<=edge;++i)
	{
		memset(a,0,sizeof(a));
		int n=0;				//计数器 
		char c=1;
		while(c!=-1 && c!='\n')
		{
			scanf("%d",&a[ ++n ]);
			c=-1;
			scanf("%c",&c);
		}
		for(int j=1;j<n;++j)
			for(int k=j+1;k<=n;++k)
				g[ a[j] ][ a[k] ]=1;
	}
	Dijkstra();
	if(dis[node]>=MAX) printf("NO");
    else printf("%d",dis[node]-1);
	return 0;
}

交上去之后,爆零了。

然后我下载了第一个数据。

发现在本地运行的结果和数据给的结果一样,可是测评姬就是没给我分。。。

请问我该怎么办。

2020/7/9 01:26
加载中...