直接两次迪杰斯特拉(使用了堆优化,用spfa应该也能过)搜最长路径,
以样例为例,第一次以1作为起点,得到1距离4最远
第二次以4作为起点,得到4距离5最远
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e12;
const int N = 100005;
int n, val, max_dis;
struct node{
int v;
long long dis;
node(int _v,long long _dis){
v = _v;
dis = _dis;
}
bool operator < (const node& a) const{
return dis > a.dis;
}
};
int vis[N];
long long dist[N];
vector<node> mp[N];
int Dijkstra(int start)
{
priority_queue<node> q;
for(int i = 1; i <= n; i++)
{
dist[i] = INF;
vis[i] = 0;
}
dist[start]= 0;
q.push(node(start,0));
while(!q.empty())
{
node N = q.top();
q.pop();
if(vis[N.v]) continue;
vis[N.v]