L3-015 球队“食物链”

Problem

Solution

大致意思是在有向图中找出一个字典序最小的环,要求这个环连接所有的点。

首先想到的就是DFS,思路如下:

1、根据输入,建立所有的有向边,当然可能出现双向的

2、使用 DFS,用 res 数组记录路径,用 vis 数组记录当前路径经过的点

3、每进入下一个点前,判断这个点有没有访问过,是不是连通

4、如果记录路径的 res 存下来 n 个点,然后检验首位是否相连

5、首位相连就说明找到了答案,我们是按照从小到大找的,所以不用考虑字典序

用这个思路提交的代码,会超时,要进行剪枝操作。

还有一些细节信息:

1、环上包括了所有的点

2、字典序最小,则意味着环要有个头的话,一定是 1

2、如果剩下的点中,没有和 1 连通的,就不用遍历了,始终无法成环。

Code

#include <bits/stdc++.h>
using namespace std;const int N = 30;
int n, flag = 0;
int mat[N][N], vis[N], res[N];void dfs(int u, int k)
{if(flag) return ;if(k == n + 1) {if(mat[u][1]) flag = 1;return ;}int pos;for(pos = 2; pos <= n; pos++) {if(!vis[pos] && mp[pos][1])break;}if(pos == n + 1) return ;for(int i = 1; i <= n; i++) {if(!vis[i] && mat[u][i]) {res[k] = i;vis[i] = 1;dfs(i, k + 1);if(flag) return ;res[k] = 0;vis[i] = 0;}}
}int main()
{cin >> n;for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {char ch;cin >> ch;if(ch == 'W') mat[i][j] = 1;else if(ch == 'L') mat[j][i] = 1;}}res[1] = 1, vis[1] = 1;dfs(1, 2);if(!flag)cout << "No Solution" << "\n";else {cout << res[1];for(int i = 2; i <= n; i++)cout << " " << res[i];}return 0;
}

【Algorithm】GPLT L3-014 球队“食物链”相关推荐

  1. L3-015 球队“食物链” (30分)

    L3-015 球队"食物链" (30分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定. ...

  2. PAT L3-015 ---- 球队“食物链”(DFS)

    球队"食物链" 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希 ...

  3. 【CCCC】L3-015 球队“食物链” (30分),搜索排列

    problem L3-015 球队"食物链" (30分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结 ...

  4. L3-015. 球队“食物链”

    L3-015. 球队"食物链" 时间限制 1000 ms 内存限制 262144 kB 代码长度限制 8000 B 判题程序 Standard 作者 李文新(北京大学) 某国的足球 ...

  5. 7-15 球队“食物链”(30 分)

    题目链接:点击打开链接 L3-015. 球队"食物链" 时间限制 1000 ms 内存限制 262144 kB 代码长度限制 8000 B 判题程序 Standard 作者 李文新 ...

  6. L3-2 球队“食物链”(30 分)

    L3-2 球队"食物链"(30 分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时 ...

  7. 7-15 球队“食物链” 某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。

    7-15 球队"食物链" 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突 ...

  8. L3-015 球队“食物链”(dfs)

    题意: 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希望从中找出一条包含所有球队的 ...

  9. CCCC-GPLT L3-015. 球队“食物链” 团体程序设计天梯赛

    某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希望从中找出一条包含所有球队的&quo ...

最新文章

  1. Chapter 2 Open Book——8
  2. 个推用户画像的实践与应用
  3. LeetCode Find All Duplicates in an Array
  4. Java Web项目运行流程
  5. 直播 | WWW 2021:用先验知识指导BERT注意力机制的语义文本匹配
  6. pd 生成mysql语句_PDMan + Navicat Premium + MySQL 数据库设计和工具
  7. 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础
  8. DW 在onload运行recordset find.html时 发生了以下javascript错误
  9. 遍历列表python_Python 遍历List的三种方法
  10. 读TXT文件带BOM问题
  11. 基于OK6410开发板Uboot源码简单分析
  12. 计算机网络七层结构与功能,网络七层结构介绍
  13. 从零构建知识图谱(技术、方法与案例)-第一章:知识图谱概览
  14. 把海水变得更蓝更透!关键在调整-曝光度
  15. TensorFlow基础学习
  16. 思科5505/5506防火墙配置與範例
  17. 电商平台是如何赚钱的?
  18. CLA与CPU数据交互
  19. 程序员该如何去写自己的简历-代码而成的简历
  20. Kafka 的简单介绍

热门文章

  1. 华为OD机试题:身高体重排序
  2. 家用人体体重秤方案规格书
  3. linux使用百度网盘(bypy)
  4. 2019年6月20日工作总结---CSS篇
  5. 热拉登陆找不到服务器,在线服务器服务器路径.ppt
  6. android 5.1 flash,Flash Player for Android 4.0 and 5.1 以上版本(提供下載)
  7. HDU4598 Difference(差分约束)
  8. Rademacher复杂度和VC-维
  9. ubuntu meld打不开
  10. PTA求100以内的素数