给定只有一个连通分支的无向连通图,找到距离最大的两个点
#include<iostream> using namespace std; int findNode(int u,int n,vector<vector<int>>& adj) { int ans=-1; vector<bool> visit(n,false); queue<int> q; q.push(u); visit[u]=true; while(!q.empty()) { int sz=q.size(); ans=q.front(); for(int i=0;i<sz;i++) { int now=q.front(); for(int j=0;j<adj[now].size();j++) { if(!visit[adj[now][j]) { visit[adj[now][j]]true; q.push(adj[now][j]); } } q.pop(); } } return ans; } int main() { int s,e; s=findNode(0,n,adj); e=findNode(s,n,adj); cout<<s<<" "<<e<<endl; return 0; }