Help !!
Difference between en2 and en3, changed 223 character(s)
`With respect to this problem :` [problem:2050G]↵

<spoiler summary="Using vector of vector, compiled successfully and giving correct output">↵
            int n;↵
            cin>>n;↵

            vector<vector<int>> g(n);↵
            vector<int> deg(n);↵
            for(int i=0, u, v; i<n-1; i++){↵
                cin>>u>>v;↵
                --u, --v;↵
                g[u].pb(v);↵
                g[v].pb(u);↵
                ++deg[u], ++deg[v];↵
            }↵

            int ans = 1;↵
            auto dfs = [&](auto self, int v, int p = -1) -> int {↵
                int mx1 = 0, mx2 = 0;↵
                for(auto &c : g[v]){↵
                    if(c == p) continue;↵
                    int res = self(self,c,v);↵
                    if(res > mx1) mx2 = mx1, mx1 = res;↵
                    else mx2 = max(mx2, res);↵
                }↵
                ans = max(ans, mx1+mx2-(mx1>0)-(mx2>0)+deg[v]);↵
                return (mx1-(mx1>0)+deg[v]-1);↵
            };↵

            dfs(dfs,0);↵
            cout<<ans<<nl;↵
</spoiler>↵


<spoiler summary="But when trying the same with array of vectors, it doesn't compile">↵
            int n;↵
            cin>>n;↵

            vector<int> g[n];↵
            vector<int> deg(n);↵
            for(int i=0, u, v; i<n-1; i++){↵
                cin>>u>>v;↵
                --u, --v;↵
                g[u].pb(v);↵
                g[v].pb(u);↵
                ++deg[u], ++deg[v];↵
            }↵

            int ans = 1;↵
            auto dfs = [&](auto self, int v, int p = -1) -> int {↵
                int mx1 = 0, mx2 = 0;↵
                for(auto &c : g[v]){↵
                    if(c == p) continue;↵
                    int res = self(self,c,v);↵
                    if(res > mx1) mx2 = mx1, mx1 = res;↵
                    else mx2 = max(mx2, res);↵
                }↵
                ans = max(ans, mx1+mx2-(mx1>0)-(mx2>0)+deg[v]);↵
                return (mx1-(mx1>0)+deg[v]-1);↵
            };↵

            dfs(dfs,0);↵
            cout<<ans<<nl;↵
</spoiler>↵

`Error by compiler -> error: use of deleted function 'main()::<lambda(auto:28, int, int)>::~<lambda>()' <lambda(auto:28, int, int)>::~<lambda>()' is implicitly deleted because the default definition would be ill-formed:`↵

`I want to know why this is happening. Can someone please tell me the reason behind this unknown behavior of lambda function ?`↵

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en5 English Intuition2.0 2024-12-07 01:43:25 4
en4 English Intuition2.0 2024-12-07 01:39:28 41
en3 English Intuition2.0 2024-12-07 01:32:43 223
en2 English Intuition2.0 2024-12-07 01:28:22 22
en1 English Intuition2.0 2024-12-07 01:27:03 2185 Initial revision (published)