求犇犇大神调试
  • 板块学术版
  • 楼主wifi500
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/16 17:00
  • 上次更新2024/3/16 19:20:34
查看原帖
求犇犇大神调试
943861
wifi500楼主2024/3/16 17:00

题目描述 天网恢恢,疏而不漏,经过上一次的抓捕,OI总部终于获取了怪盗的特征!现在,我们需要在基德再次来之前就把他的特征送到超级大牛的手上,可惜超级大牛不在总部.所以飞过海必须尽快把资料送到大牛家里.已知OI总部到大牛家中间有 � − 2 n−2个城城市,为了尽快达到目的地,飞过海通过水晶球(够先进吧)了解到OI总部到大牛家的路线图,图上显示了 � n个城之间的连接距离。 可是飞过海很忙,需要请你来帮忙写个程序.

输入格式 第一行 � n第二行到第n+1行 每行 � n个数字(第 � + 1 i+1行,表示第 � i个城市与其他城市之间的连接关系 0 表示不连接 其他数字表示连接的距离 )

输出格式 第1行 � n个用空格间隔的整数表示所选的线路第2行一个数字最短距离

样例一 input 7 0 3 5 0 0 0 0 0 0 0 7 8 6 0 0 0 0 0 4 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 0 output 1 2 4 7 14 限制与约定 对于100%的数据, � ≤ 1000 n≤1000

时间限制: 1 s 1s

空间限制: 256 MB 256MB

#include<bits/stdc++.h>
using namespace std;

struct node
{
	long long zx;
	long long bq;
};
vector<node>tu[1005];
queue<int >q;
long long a , out[1005] = { } , jl[1005] = { }; 

int main()
{
	for(long long i = 2 ; i <= 1005 ; i++)
	{
		jl[i] = 10000007;
	}
	jl[1] = 0;
	scanf("%lld",&a);
	for(long long i = 1 ; i <= a ; i++)
	{
		for(long long j = 1 ; j <= a ; j++)
		{
			long long val;
			if(scanf("%lld",&val))
			{
				tu[i].push_back((node){j , val});
				out[i]++;
			}
		}
	}
//  SPFA
	q.push(1);
	while(!q.empty())
	{
		long long z = q.front();
		q.pop();
		for(long long i = 0 ; i < out[z] ; i++)
		{
			if(jl[tu[z][i].zx] > jl[z] + tu[z][i].bq)
			{
				jl[tu[z][i].zx] = jl[z] + tu[z][i].bq;
				q.push(tu[z][i].zx);
			}
		}
	}
	printf("%lld",jl[a]);
	return 0;
}

一直是0.。。

2024/3/16 17:00
加载中...