图的m着色问题
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=200+5;
int n,m,r,a[maxn][maxn],ans,vis[maxn];
void dfs(int cnt){
int i,j;
if(cnt==n){
ans++;
return ;
}
for(i=1;i<=r;i++){
for(j=0;j<cnt;j++){
if(a[cnt][j]&&vis[j]!=i){
vis[cnt]=i;
dfs(cnt+1);
vis[cnt]=0;
}
}
}
}
int main(){
int i;
cin>>n>>m>>r;
for(i=1;i<=m;i++){
int x,y;
cin>>x>>y;
a[x][y]=a[y][x]=1;
}
for(i=1;i<=r;i++){
vis[0]=i;
dfs(1);
}
cout<<ans<<endl;
return 0;
}