您的位置:首页 > 其它

【多校训练】hdu 6165 FFF at Valentine

2017-08-23 15:12 465 查看
题意:

题目很迷,大概的意思是给出一个图,问任意两点之间是否存在一条路径可达

思路:

数据比较弱,直接暴力过了 ,其实可以缩点后再dfs。

//
// main.cpp
// 1005
//
// Created by zc on 2017/8/22.
// Copyright © 2017年 zc. All rights reserved.
//

#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int N=1100;
int n,m,ans,p,v
,c

;
vector<int>r
;

void dfs(int t)
{
v[t]=1;
c[p][t]=1;
for(int i=0;i<r[t].size();i++)
{
if(!v[r[t][i]])
{
dfs(r[t][i]);
}
}
}

int main(int argc, const char * argv[]) {
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
ans=0;
for(int i=0;i<=n;i++) r[i].clear();
for(int i=0;i<m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
r[x].push_back(y);
}
memset(c,0,sizeof(c));
for(int i=1;i<=n&&ans==0;i++)
{
memset(v,0,sizeof(v));
p=i;
dfs(i);
for(int j=1;j<i;j++)
{
if(c[i][j]==0&&c[j][i]==0)
{
ans=1;break;
}
}
}
if(ans==0)
printf("I love you my love and our love save us!\n");
else
printf("Light my fire!\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: