Codevs 2822 愛在心中

2022-02-13 10:06:25 字數 2057 閱讀 1562

2822 愛在心中

**時間限制: 1 s

空間限制: 128000 kb**

傳送門題目等級 :鑽石 diamond

題目描述 description

每個人都擁有乙個夢,即使彼此不相同,能夠與你分享,無論失敗成功都會感動。愛因為在心中,平凡而不平庸,世界就像迷宮,卻又讓我們此刻相逢our home。」

在愛的國度裡有n個人,在他們的心中都有著乙個愛的名單,上面記載著他所愛的人(不會出現自愛的情況)。愛是具有傳遞性的,即如果a愛b,b愛c,則a也愛c。

如果有這樣一部分人,他們彼此都相愛,則他們就超越了一切的限制,用集體的愛化身成為乙個愛心天使。

現在,我們想知道在這個愛的國度裡會出現多少愛心天使。而且,如果某個愛心天使被其他所有人或愛心天使所愛則請輸出這個愛心天使是由哪些人構成的,否則輸出-1。

輸入描述 input description

第1行,兩個數n、m,代表愛的國度裡有n個人,愛的關係有m條。

第2到第m+1行,每行兩個數a、b,代表a愛b。

輸出描述 output description

第1行,乙個數,代表愛的國度裡有多少愛心天使。

第2行,如果某個愛心天使被其他所有人和愛心天使所愛則請輸出這個愛心天使是由哪些人構成的(從小到大排序),否則輸出-1。

樣例輸入 sample input

樣例輸入1:

6 7

1 2

2 3

3 2

4 2

4 5

5 6

6 4

樣例輸入2:

3 3

1 2

2 1

2 3

樣例輸出 sample output

樣例輸出1:

2 2 3

樣例輸出2:

1 -1

分類標籤 tags

spfa 強連通分量 圖論

/*

此題有兩個詢問:

(1)找連通分量個數(縮點前節點數不唯一的).

(2)找出度為0且符合(1)的.

tarjan模板+縮點+統計出度.

*/#include

#include

#include

#include

#define maxn 10001

using

namespace

std;

struct data

e[maxn];

struct node

g[maxn];

int dfn[maxn],low[maxn],stack[maxn],n,m,tot,top,cut,ans,b[maxn],head[maxn];

bool in[maxn],s[maxn];

void add_edge(int u,int v)

void tarjan(int u)

else

if(in[v])

}if(dfn[u]==low[u])

while(u!=v);

sort(a+1,a+l+1);

g[tot].l=l;

for(int i=1;i<=l;i++)

g[tot].x[i]=a[i];

if(g[tot].l==1) ans--,s[tot]=0;

else s[tot]=1;

}}int main()

tot=0;

for(int i=1;i<=n;i++)

int out[maxn]=;

for(int i=1;i<=n;i++)

}cout

for(int i=1;i<=tot;i++)

else xx=i;} }

if(xx==-1) cout

<<-1;

else

return

0;}

codevs 2822 愛在心中

題目描述 每個人都擁有乙個夢,即使彼此不相同,能夠與你分享,無論失敗成功都會感動。愛因為在心中,平凡而不平庸,世界就像迷宮,卻又讓我們此刻相逢our home。在愛的國度裡有n個人,在他們的心中都有著乙個愛的名單,上面記載著他所愛的人 不會出現自愛的情況 愛是具有傳遞性的,即如果a愛b,b愛c,則a...

codevs2822 愛在心中

題目描述 description 每個人都擁有乙個夢,即使彼此不相同,能夠與你分享,無論失敗成功都會感動。愛因為在心中,平凡而不平庸,世界就像迷宮,卻又讓我們此刻相逢our home。在愛的國度裡有n個人,在他們的心中都有著乙個愛的名單,上面記載著他所愛的人 不會出現自愛的情況 愛是具有傳遞性的,即...

codevs 2822 愛在心中

時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題目描述 description 每個人都擁有乙個夢,即使彼此不相同,能夠與你分享,無論失敗成功都會感動。愛因為在心中,平凡而不平庸,世界就像迷宮,卻又讓我們此刻相逢our home。在愛的國度裡有n個人,在他們的心中都...