找了一晚上没找到错,dfs爆搜
查看原帖
找了一晚上没找到错,dfs爆搜
181805
天马行空mz楼主2023/3/30 19:18
#include<bits/stdc++.h>
using namespace std;
#define TLE (double)clock() / CLOCKS_PER_SEC <= 0.95
#define lowbit(x) (x&(-x))
#define IOS ios::sync_with_stdio(false)
#define ll long long
#define INF 0x3f3f3f3f
#define maxn 2000
unordered_map<int,int> pd[maxn];
int flag[maxn];//判断是否走过 
int ans;//答案 
int n,m;
void dfs(int x)
{
	ans++;
	for(int i=x+1;i<=n;i++)
	{
		if(pd[x][i]==1||flag[i]==1) continue;
		flag[i]=1;
		dfs(i);
		flag[i]=0;//回溯 
	}
}
int main()
{
	IOS;
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int f1,f2;
		cin>>f1>>f2;
		pd[f1][f2]=pd[f2][f1]=1; 
	}
	for(int i=1;i<=n;i++)
	{
		flag[i]=1;
		dfs(i);
		flag[i]=0;//回溯 
	}
	cout<<ans+1<<endl;//+1为不加材料 
	return 0;
}
2023/3/30 19:18
加载中...