HDU

来源:互联网 发布:女朋友 文艺青年 知乎 编辑:程序博客网 时间:2024/06/18 15:39

给你一个有向图,让你求是否能从该图任意两点之间是否能从一点到达另一点。所以connect二维数组记录是否可以到达,若存在两点不能联通,则no

#include<bits/stdc++.h>using namespace std;#define maxn 1001int t;int a,b;bool vis[maxn];bool con[maxn][maxn];int n,m;bool flag;vector<int> vec[maxn];void dfs(int s, int num){    con[num][s] = 1;    con[s][num] = 1;    for(int i = 0; i < vec[s].size(); i++)    {        if(!vis[vec[s][i]])        {            vis[vec[s][i]] = 1;            dfs(vec[s][i], num);        }    }}int main(){    scanf("%d",&t);    while(t--)    {        memset(con, 0, sizeof(con));        for(int i = 0; i<maxn;i++)            vec[i].clear();        scanf("%d%d", &n, &m);        for(int i = 1; i <= m; i++)        {            scanf("%d%d",&a,&b);            vec[a].push_back(b);        }        flag = 0;bool check = 0;        for(int i = 1; i <= n; i++)        {            memset(vis, 0, sizeof(vis));            vis[i] = 1;            dfs(i, i);        }        for(int i = 1;i<=n;i++)        {            for(int j = 1; j<=n;j++)            {                if(!con[i][j])                {                    flag = 1;                    break;                }            }        }        puts(!flag?"I love you my love and our love save us!":"Light my fire!");    }}
原创粉丝点击