您当前的位置: 首页 > 

先求一个导

暂无认证

  • 1浏览

    0关注

    291博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PTA天梯赛L2-1紧急救援

先求一个导 发布时间:2021-10-15 13:34:32 ,浏览量:1

题意: 纯纯的Dij裸题,要求输出路径,如果有多条最短路径,则输出点权和最大的路径。 思路: 区分dist[j] > dist[u] + w[i] 和 dist[j] == dist[u] + w[i] 注意堆优化别写个大根堆!(指自己

代码:

#include
#define mem(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef pair PII;
const int N = 502;
const int M = 3e5+10;
const int INF = 0x3f3f3f3f;
int n,m,k,S,T;
int h[N],e[M],ne[M],w[M],idx = 0;
void add(int a,int b,int c)
{
	e[idx] = b,w[idx] = c,ne[idx] = h[a],h[a] = idx++;
}
#define int long long
int a[N];
bool vis[N];
int dist[N];
int cnt[N];
int num[N];
int pre[N];
void Dij(int S)
{
	mem(vis,false);
	mem(dist,0x3f);
	mem(pre,-1);
	dist[S] = 0;
	cnt[S] = 1;
    num[S] = a[S];
	for(int t=0;t>T;
	S ++ ; T ++ ;
	for(int i=1;i>a[i];
	for(int i=0;i>x>>y>>z;
		x ++ ; y ++ ;
		add(x,y,z); add(y,x,z);
	}
	Dij2(S);
	cout            
关注
打赏
1662037414
查看更多评论
0.0398s