lambda表达式报错[Error] use of deleted function 'solve()::<lambda(auto:1, int, int)>::~<lambda>()'解决办法

解决办法

不能用变量来开数组,如将下面代码中int size[n+1]改为int size[40000];

#include<bits/stdc++.h>
using namespace std;
void solve(){
	int n;
	cin>>n;
	int size[n+1];
	vector<vector<int> >a(n+1);
	for(int i=1;i<n;i++){
		int u,v;
		cin>>u>>v;
		a[u].push_back(v);
		a[v].push_back(u);
	}
	auto dfs=[&](auto self,int x,int y)->void{
		size[x]=1;
		for(auto i:a[x]){
			if(i==y)continue;
			self(self,i,x);
			size[x]+=size[i];
		}
	};
	dfs(dfs,1,0);
	cout<<size[1]<<endl;
}
 
signed main() {
    ios::sync_with_stdio(0);
    cout.tie(0),cin.tie(0);
    int test=1;
    //cin>>test;
    while(test--)
    solve();
    return 0;
}
 

int 
posted @ 2025-03-20 20:11  C微  阅读(28)  评论(0)    收藏  举报