【Algorithm】GPLT L3-014 球队“食物链”
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 球队“食物链”相关推荐
- L3-015 球队“食物链” (30分)
L3-015 球队"食物链" (30分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定. ...
- PAT L3-015 ---- 球队“食物链”(DFS)
球队"食物链" 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希 ...
- 【CCCC】L3-015 球队“食物链” (30分),搜索排列
problem L3-015 球队"食物链" (30分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结 ...
- L3-015. 球队“食物链”
L3-015. 球队"食物链" 时间限制 1000 ms 内存限制 262144 kB 代码长度限制 8000 B 判题程序 Standard 作者 李文新(北京大学) 某国的足球 ...
- 7-15 球队“食物链”(30 分)
题目链接:点击打开链接 L3-015. 球队"食物链" 时间限制 1000 ms 内存限制 262144 kB 代码长度限制 8000 B 判题程序 Standard 作者 李文新 ...
- L3-2 球队“食物链”(30 分)
L3-2 球队"食物链"(30 分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时 ...
- 7-15 球队“食物链” 某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。
7-15 球队"食物链" 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突 ...
- L3-015 球队“食物链”(dfs)
题意: 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希望从中找出一条包含所有球队的 ...
- CCCC-GPLT L3-015. 球队“食物链” 团体程序设计天梯赛
某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时,联赛主席突发奇想,希望从中找出一条包含所有球队的&quo ...
最新文章
- Chapter 2 Open Book——8
- 个推用户画像的实践与应用
- LeetCode Find All Duplicates in an Array
- Java Web项目运行流程
- 直播 | WWW 2021:用先验知识指导BERT注意力机制的语义文本匹配
- pd 生成mysql语句_PDMan + Navicat Premium + MySQL 数据库设计和工具
- 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础
- DW 在onload运行recordset find.html时 发生了以下javascript错误
- 遍历列表python_Python 遍历List的三种方法
- 读TXT文件带BOM问题
- 基于OK6410开发板Uboot源码简单分析
- 计算机网络七层结构与功能,网络七层结构介绍
- 从零构建知识图谱(技术、方法与案例)-第一章:知识图谱概览
- 把海水变得更蓝更透!关键在调整-曝光度
- TensorFlow基础学习
- 思科5505/5506防火墙配置與範例
- 电商平台是如何赚钱的?
- CLA与CPU数据交互
- 程序员该如何去写自己的简历-代码而成的简历
- Kafka 的简单介绍