l3-015 球隊「食物鏈」 (30分)
某國的足球聯賽中有n支參賽球隊,編號從1至n。聯賽採用主客場雙迴圈賽制,參賽球隊兩兩之間在雙方主場各賽一場。
聯賽戰罷,結果已經塵埃落定。此時,聯賽主席突發奇想,希望從中找出一條包含所有球隊的「食物鏈」,來說明聯賽的精彩程度。「食物鏈」為乙個1至n的排列,滿足:球隊t
1 戰勝過球隊t
2 ,球隊t
2 戰勝過球隊t
3 ,⋯,球隊t
(n−1)
戰勝過球隊t
n ,球隊t
n 戰勝過球隊t
1 。
現在主席請你從聯賽結果中找出「食物鏈」。若存在多條「食物鏈」,請找出字典序最小的。
注:排列在字典序上小於排列,當且僅當存在整數k(1≤k≤n),滿足:a
k 輸入格式:
輸入第一行給出乙個整數n(2≤n≤20),為參賽球隊數。隨後n行,每行n個字元,給出了n×n的聯賽結果表,其中第i行第j列的字元為球隊i在主場對陣球隊j的比賽結果:w表示球隊i戰勝球隊j,l表示球隊i負於球隊j,d表示兩隊打平,-表示無效(當i=j時)。輸入中無多餘空格。
輸出格式:
按題目要求找到「食物鏈」t
1 t
2 ⋯ t
n ,將這n個數依次輸出在一行上,數字間以1個空格分隔,行的首尾不得有多餘空格。若不存在「食物鏈」,輸出「no solution」。
輸入樣例1:
5-lwdw
w-ldw
ww-lw
dww-w
ddlw-
輸出樣例1:
1 3 5 4 2
輸入樣例2:
5-wddw
d-dwl
dd-dw
ddw-d
dddd-
輸出樣例2:
no solution
題目理解,題意是不論主客場只要勝過就行,所以注意輸入。
std::ios::sync_with_stdio(false);
這句話不要與getchar();一起出現,否則快取區可能會出現一些問題,因為這個wa到自閉。
#include
#include
#include
using
namespace std;
int n;
char s;
int a[25]
[25];
int ans[25]
;int vis[25]
;int flag;
intdfs
(int x,
int step)
cout << endl;
return0;
}}int i;
for(i =
2;i <= n;i++)}
if(i==n+1)
return0;
for(
int i =
2;i <= n;i++)}
}int
main()
getchar()
;}vis[1]
=1;dfs(1
,1);
if(!flag)
cout <<
"no solution"
<< endl;
return0;
}
L3 015 球隊「食物鏈」
時間限制 1000 ms 記憶體限制 262144 kb 長度限制 8000 b 判題程式 standard 作者 李文新 北京大學 某國的足球聯賽中有n支參賽球隊,編號從1至n。聯賽採用主客場雙迴圈賽制,參賽球隊兩兩之間在雙方主場各賽一場。聯賽戰罷,結果已經塵埃落定。此時,聯賽主席突發奇想,希望從...
L3 015 球隊「食物鏈」 dfs 剪枝
l3 015 球隊 食物鏈 30 分 某國的足球聯賽中有n支參賽球隊,編號從1至n。聯賽採用主客場雙迴圈賽制,參賽球隊兩兩之間在雙方主場各賽一場。聯賽戰罷,結果已經塵埃落定。此時,聯賽主席突發奇想,希望從中找出一條包含所有球隊的 食物鏈 來說明聯賽的精彩程度。食物鏈 為乙個1至n的排列,滿足 球隊t...
L3 015 球隊「食物鏈」 30分
某國的足球聯賽中有n支參賽球隊,編號從1至n。聯賽採用主客場雙迴圈賽制,參賽球隊兩兩之間在雙方主場各賽一場。聯賽戰罷,結果已經塵埃落定。此時,聯賽主席突發奇想,希望從中找出一條包含所有球隊的 食物鏈 來說明聯賽的精彩程度。食物鏈 為乙個1至n的排列,滿足 球隊t 1 戰勝過球隊t 2,球隊t 2戰勝...