邻接矩阵图最优着色问题

yangboufo yangboufo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
能帮我写个深度优先搜索求最少颜色问题的代码吗?邻接矩阵已经创建
深度搜索代码如下,能否请高人改成求最优着色问题的代码(相邻两点不能同色的最少着色方案,用channel输出)
#include<iostream>
#include<string>
using namespace std;
bool visit[26];
int channel=0;
void DFS(int r[][26],int a)
{
visit[a]=true;
channel++;
for(int i=0;i<26;i++)//对该结点尚未访问的邻接结点递归调用DFS函数
{
if((visit[i]==false)&&(r[a][i]==1))
{
DFS(r,i);
}
}

}
int main()
{
int num;
while((cin>>num)&&(num!=0))
{
int tnum=num;
int r[26][26]={-1};
int row,col;
for(row=0;row<num;row++)
{
for(col=0;col<num;col++)
{
r[row][col]=0;
}
}//根据输入的num值初始化num阶数组
row=0;
col=0;
while(num>0)
{
string str;
cin>>str;
int i=0;
for(i=2;i<str.length();i++)
{
col=str[i]-65;
r[row][col]=1;
}
row++;
num--;
}//生成深度优先搜索的矩阵
for(int i=0;i<tnum;i++)
{
visit[i]=false;
}
for(int j=0;j<tnum;j++)
{
if((visit[j]==false))//对尚未访问过的结点调用DFS函数
{
DFS(r,j);
}
}
cout<<channel;
channel=0;
}


return 0;
}
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
yangboufo
C++ 语言 65,214 成员 250,514 内容