1 条题解

  • 0
    @ 2025-1-7 11:49:14

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int n,k,m;
    vector<int> edges[101];
    int ans;
    int d[101];
    
    bool pd(int x, int c)
    {
    	for (int i : edges[x])
    		if (d[i] == c)
    			return false;
    	return true;
    }
    
    void dfs(int p){
    	if(p > n){
    		ans++;
    		return; 
    	}
    	for (int i = 1; i <= m; i++)
    	{
    		if (pd(p, i))
    		{
    			d[p] = i;
    			dfs(p + 1);
    			d[p] = 0;
    		}
    	}
    }
    int main(){
    	cin>>n>>k>>m;
    	for(int i=1;i<=k;i++){
    		int x,y;scanf("%d%d",&x,&y);
    		edges[x].push_back(y);
    		edges[y].push_back(x);
    	}
    	dfs(1);
    	cout<<ans;
    	return 0;
    }
    /*
    */
    

    信息

    ID
    1083
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者