對於守望先鋒這種pvp遊戲,乙個團隊的搭配是非常重要的。
現在給你 \(n\) 個英雄,告訴你若干個形如 \((u,v)\) 的關係表示第 \(u\) 個英雄和第 \(v\) 個英雄相性很好。現在要你把這 \(n\) 個英雄分成兩部分,使得每個部分中的英雄互相之間相性都很好,如果存在一種分法,那麼輸出 \(「yes"\),否則輸出 \(「no」\)。
輸入格式:
第一行乙個整數 \(t\) 表示資料組數。
對於每組資料,第一行兩個整數 \(n,m\) ,分別表示英雄個數與相性好的對數。
接下來 \(m\) 行每行兩個整數 \(u,v\) 表示 \(u\) 與 \(v\) 之間相性很好。
保證每對關係只會出現一次。
輸出格式:
對於每組資料,輸出一行 \(「yes」\) 或者 \(「no」\)。
輸入樣例:
2輸出樣例:5 42 3
2 43 4
1 35 7
2 54 1
4 31 3
2 42 3
5 4
no對於 \(30\%\) 的資料,滿足 \(2≤n≤10\) 。yes
對於 \(100\%\) 的資料,滿足 \(2≤n≤10^3,m≤\frac,t≤10\) 。
建議使用快速讀入方式,保證輸入檔案大小在 \(15mb\) 以內。
二分圖的判斷。
利用二分圖的性質幫助判斷。
基本想法:
題目可以化簡為:能否將所有點分成兩個圖,使得這兩個圖都為完全圖(完全圖內每個點都與其他的點至少有一條邊相連)。
改進:
從反方向考慮題目,如果能夠分成兩個完全圖,那麼這個圖內的任意兩個點之間不能是相性不好。
所以整個圖中所有相性不好的邊都是穿插在兩個圖中的,也就是相性不好的邊能形成二分圖。
通過檢查該圖是否為二分圖即可判斷。
#include #define whd(a) while(a isdigit(c=getchar()))
#define xpp x=(x<<1)+(x<<3)+(c^48)
#define il inline
using namespace std;
const int maxn = 1e3+5;
int n, m, c[maxn];
bool t[maxn][maxn];
il int rd()
bool find(int x, int c)
return 1;
}int main()
if(find(1, 2)) puts("yes");
else puts("no");
}return 0;
}
注意反著建圖或者反著跑圖,題解採用的是反著跑圖。 0002組隊參賽規則
quote 乙個參賽隊伍不能超過三人,可以擁有乙個替補。包括替補在內任何參賽隊員必須為高中畢業五年內,才可以參賽,也就是說研究生一年級的學生還可以參加。現在的問題是給你乙個隊伍,請判斷這個隊伍是否合法。輸入資料 輸入資料報括若干組,每一組包括有若干行,第一行為乙個整數n,為這個隊伍的人數,接著有n行...
20110805 組隊賽 f題
測試資料有多組,對於每組資料,第一行為乙個整數n 1 n 10000 表示表示式中數字的個數,其後的第i 1行每行有乙個整數表示xi的值 1 i n 1 xi 1000000000 對於每組資料,如果你能幫阿里巴巴開啟石門,輸出yes,否則輸出no。58421143579 yesno 這是劉汝佳黑書...
BNUOJ 51280 組隊活動
題目 題意 中文題目!解題方法 dp i i個人的組隊方案數。dp 1,dp i sigma c i 1,j dp i 1 j 這個方程怎麼來的呢?考慮一下第i個人,在他前面有j個人,他可以選擇的方案數為c i 1,j 剩餘的i 1 j的方案數為dp i 1 j 根據乘法原理得到每個j的貢獻是c i...