FFF at Valentine

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1060    Accepted Submission(s): 506

Problem Description

At
Valentine's eve, Shylock and Lucar were enjoying their time as any
other couples. Suddenly, LSH, Boss of FFF Group caught both of them, and
locked them into two separate cells of the jail randomly. But as the
saying goes: There is always a way out , the lovers made a bet with LSH:
if either of them can reach the cell of the other one, then LSH has to
let them go.
The jail is formed of several cells and each cell has
some special portals connect to a specific cell. One can be transported
to the connected cell by the portal, but be transported back is
impossible. There will not be a portal connecting a cell and itself, and
since the cost of a portal is pretty expensive, LSH would not tolerate
the fact that two portals connect exactly the same two cells.
As an
enthusiastic person of the FFF group, YOU are quit curious about whether
the lovers can survive or not. So you get a map of the jail and decide
to figure it out.
 
Input
∙Input starts with an integer T (T≤120), denoting the number of test cases.
∙For each case,
First line is two number n and m, the total number of cells and portals in the jail.(2≤n≤1000,m≤6000)
Then next m lines each contains two integer u and v, which indicates a portal from u to v.
 
Output
If the couple can survive, print “I love you my love and our love save us!”
Otherwise, print “Light my fire!”
 
Sample Input
3
5 5
1 2
2 3
2 4
3 5
4 5 3 3
1 2
2 3
3 1 5 5
1 2
2 3
3 1
3 4
4 5
Sample Output
Light my fire!
I love you my love and our love save us!
I love you my love and our love save us!
Source
分析:缩点为DAG,则如果在拓扑序中出现了有两个及以上入度为0的点则不合法
下面给出AC代码:
 #include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int MAXN=;
const int MAXM=;
struct Edge{
int to,next;
}edge[MAXM],edge2[MAXM];
int head[MAXN],head2[MAXN],tot,tot2;
int Low[MAXN],DFN[MAXN],Stack[MAXN],Belong[MAXN];
int Index,top;
int scc;
bool Instack[MAXN];
int num[MAXN];
int in[MAXN],out[MAXN];
void addedge(int u,int v){
edge[tot].to=v;edge[tot].next=head[u];head[u]=tot++;
}
void addedge2(int u,int v){
edge2[tot2].to=v;edge2[tot2].next=head2[u];head2[u]=tot2++;
}
void Tarjan(int u){
int v;
Low[u]=DFN[u]=++Index;
Stack[top++]=u;
Instack[u]=true;
for(int i=head[u];i!=-;i=edge[i].next){
v=edge[i].to;
if(!DFN[v]){
Tarjan(v);
if(Low[u]>Low[v])Low[u]=Low[v];
}
else if(Instack[v]&&Low[u]>DFN[v])
Low[u]=DFN[v];
}
if(Low[u]==DFN[u]){
scc++;
do{
v=Stack[--top];
Instack[v]=false;
Belong[v]=scc;
num[scc]++;
}
while(v!=u);
}
}
void solve(int N){
memset(DFN,,sizeof(DFN));
memset(Instack,false,sizeof(Instack));
memset(num,,sizeof(num));
Index=scc=top=;
for(int i=;i<=N;i++){
if(!DFN[i])
Tarjan(i);
}
} bool map2[MAXN][MAXN];
void build(int n){
memset(map2,false,sizeof(map2));
memset(in,,sizeof(in));
memset(out,,sizeof(out));
memset(head2,-,sizeof(head2));tot2=;
for(int i=;i<=n;i++){
for(int j=head[i];j!=-;j=edge[j].next){
int v=edge[j].to;
int a=Belong[i];
int b=Belong[v];
if(a==b)continue;
if(!map2[a][b]){
addedge2(a,b);
map2[a][b]=true;
in[b]++;out[a]++;
}
}
}
} void init(){
tot=;
memset(head,-,sizeof(head));
} bool Top(){
queue<int >q;
while(!q.empty())q.pop();
for(int i=;i<=scc;i++){
if(in[i]==)q.push(i);
} while(!q.empty()){
if(q.size()!=)return false;
int u=q.front();
q.pop();
for(int i=;i<=scc;i++){
if(map2[u][i]==true) {
in[i]--;
if(in[i]==)q.push(i);
}
}
}
return true;
} int n,m;
int main()
{
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
init();
for(int i=;i<m;i++){
int u,v;
scanf("%d%d",&u,&v);
addedge(u,v);
}
solve(n);
build(n); if(!Top()){printf("Light my fire!\n");}
else printf("I love you my love and our love save us!\n");
} return ;
}

2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】的更多相关文章

  1. 2017ACM暑期多校联合训练 - Team 9 1005 HDU 6165 FFF at Valentine (dfs)

    题目链接 Problem Description At Valentine's eve, Shylock and Lucar were enjoying their time as any other ...

  2. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  3. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  4. 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】

    Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  5. 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】

    Big binary tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  6. 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】

    Colorful Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  8. 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  9. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

随机推荐

  1. spring boot利用swagger和spring doc生成在线和离线文档

    参考博客地址: 在线文档:http://blog.didispace.com/springbootswagger2/ 离线文档:http://www.jianshu.com/p/af7a6f29bf4 ...

  2. JMeter3.0脚本中文乱码解决方法

    修改apache-jmeter-3.0\bin\jmeter.properties文件,编辑jsyntaxtextarea.font.family=宋体.

  3. JaveScript用二分法与普通遍历(冒泡)

    二分法 查找 概念: 从有序的数列中,折半查找. 思路: --> 找到数组中最中间的元素,将其作为基准 --> 从0开始判断数组中的元素,与基准进行比较 --> 比基准小的元素,存入 ...

  4. Node: 如何控制子进程的输出

    大家知道,在一个node程序中,如果当前进程想要生成一个子进程,它可以调用child_process模块的spawn方法.spawn方法签名如下: child_process.spawn(comman ...

  5. hibernate核心API使用

    1.Configuration 加载核心配置文件,核心配置文件名称和位置固定,否则会找不到 2.SessionFactory对象一个项目只创建一个,大家公用 根据配置文件和映射关系创建表 由于要创建表 ...

  6. MyBatis map foreach

    以下资料来源于网络,仅供参考学习.   mybatis 遍历map实例 map 数据如下 Map<String,List<Long>>.   测试代码如下: public vo ...

  7. python爬取大众点评并写入mongodb数据库和redis数据库

    抓取大众点评首页左侧信息,如图: 我们要实现把中文名字都存到mongodb,而每个链接存入redis数据库. 因为将数据存到mongodb时每一个信息都会有一个对应的id,那样就方便我们存入redis ...

  8. ASP.NET如何通过后台数据库提供的链接播放视频(不使用外置插件)

    1.后台视频数据库: 2.aspx中的关键代码: <asp:DataList ID="DataList2" runat="server" DataKeyF ...

  9. [HNOI2008]Cards

    题目描述 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案. 进一步,小春要求染出Sr张红色,Sb张蓝 ...

  10. java内存溢出问题

    相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决j ...