图(三色标记法,初概念)
//颜色染色法
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>>g(numCourses);
for(auto&q:prerequisites){
g[q[0]].push_back(q[1]);
}
vector<int>color(numCourses,0);
//0表示未访问,1表示正在访问,2表示访问结束
auto dfs=[&](this auto&&dfs,int x)->bool{
color[x]=1;
for(auto&p:g[x]){
if(color[p]==1||color[p]==0&&dfs(p)){
return true;
}
}
color[x]=2;
return false;
};
for(int i=0;i<numCourses;i++){
if(dfs(i)) return false;
}
return true;
}
};
//拓扑排序(kahn算法)
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>>e(numCourses);
vector<int>din(numCourses);//入度
for(auto&q:prerequisites){
e[q[1]].push_back(q[0]);//邻接表
din[q[0]]++;
}
queue<int>tp;
for(int i=0;i<numCourses;i++){
if(din[i]==0) tp.push(i);
}
int ans=0;
while(!tp.empty()){
int x=tp.front();
tp.pop();
ans++;
for(auto&q:e[x]){
if(--din[q]==0){
tp.push(q);
}
}
}
return ans==numCourses;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具