Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define fast ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL)
- #define ll long long
- #define ld long double
- #define pb push_back
- #define fe first
- #define se second
- #define nl "\n"
- #define pp pair < ll , ll >
- #define sz(x) (ll)x.size()
- #define st(x) sort(x.begin(),x.end())
- #define rst(x) sort(x.rbegin(), x.rend())
- #define all(x) x.begin(),x.end()
- long double pi = 3.14159265358979323;
- const double EPS = 1e-12;
- const int N = 1e6 + 5;
- const int mod = 1e9 + 7;
- bool vis[N];
- vector < ll > v[N];
- ll dp[N];
- //Diameter of a tree
- ll ans;
- void dfs(ll s){
- vis[s] = 1;
- for(auto it : v[s]){
- if(!vis[it]){
- dfs(it);
- }
- }
- multiset < ll > st;
- st.insert(0);
- for(auto it : v[s])st.insert(dp[it]);
- auto itr = st.rbegin();
- dp[s] = 1 + *itr;
- //cout << dp[s] << " ";
- if(st.size() > 1){
- itr++;
- ans = max(ans, dp[s] + *itr);
- }
- ans = max(ans , dp[s]);
- //cout << s << " " << dp[s] << "\n";
- }
- int main()
- {
- fast;
- ll n, m;
- cin >> n >> m ;
- for(int i = 0 ; i < m ;i++ ){
- ll a , b;
- cin >> a >> b ;
- v[a].pb(b);
- v[b].pb(a);
- }
- dfs(1);
- cout << ans - 1;
- return 0;
- }
Add Comment
Please, Sign In to add comment