卑微蒟蒻在线求解
查看原帖
卑微蒟蒻在线求解
936541
Genkaim楼主2023/7/13 22:30
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
struct node{
  ll next,w;
};
struct node2{
	ll x,w;
};
vector<node> mp[N];
ll n,m,k,fx;
ll d[N];
bool vis[N];

bool operator > (node2 a, node2 b){
  return a.w > b.w;
}

bool operator < (node2 a, node2 b){
  return a.w < b.w;
}
priority_queue<node2, vector<node2> > q;
void f(ll sx){
	memset(d, 0x7f, sizeof(d));
	d[sx]=0;
	q.push(node2{sx, 0});
	while(!q.empty()){
		node2 t = q.top();
		ll x = t.x;
		q.pop();//出队
		if(vis[x])continue;
		for(ll i = 0; i < mp[x].size(); ++i){
			ll next = mp[x][i].next,w;
			w = mp[x][i].w; 
			if(d[x]+w < d[next]){
				d[next] = d[x]+w;
				if(vis[next])continue;
				q.push(node2{next, d[next]});
			}
		}
		vis[x] = true;
    }
}
int main(){
    ll sx;
	scanf("%d%d%d", &n, &m, &sx);
	for(ll i = 1; i <= m; ++i){
    ll x, y, w;
    scanf("%d%d%d", &x, &y, &w);
    mp[x].push_back(node{y, w});
  }
  f(sx);
  for(ll i = 1; i <= n ;++i){
    cout<<d[i]<<" ";
  }
  return 0;
}

蒟蒻问下为什么这代码会全RE啊
隔壁弱化版全过了 悲
顺带问下为什么堆优化less和greater互换隔壁弱化版都能过

2023/7/13 22:30
加载中...