Problem F. A-maze-ing-----“今日头条”杯2018年湖北省赛(网络赛)

标签: “今日头条”杯2018年湖北省赛(网络赛)
42人阅读 评论(0) 收藏 举报
分类:

“今日头条”杯2018年湖北省赛(网络赛):所有题目链接

可以提交的链接(不知道现在还能进不了,你还要有账号):传送门

Problem F. A-maze-ing

这里写图片描述

题目大意:很坑啊,当初读了半天题,没读懂是什么意思。
给你n个点,m条有向边,问你:其中一条路中包含点最多是多少。

思路:先用Trajan缩点,然后,深搜找出其中包含点最多的。

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include<queue>
#include<math.h>
#include <string>
#include <algorithm>
#include<stack>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define PI acos(-1.0)

const int maxn=2*1e5+9;

int low[maxn],pre[maxn],sccno[maxn],sccinq[maxn],clock_pre,clock_low;//Trajan算法的
stack<int>s;
int vis[maxn],inq[maxn];//VIS记录缩点后入度为0的点,inq记录从该点开始所有路中包含最多的点是多少个。
int firs[maxn],first[maxn];//firs记录缩点前的边,first记录缩点后的边
struct node
{
    int v,nex;
} edge[maxn],ed[maxn];

int N,tot;
void get(int u,int v)
{
    edge[N]=(node)
    {
        v,firs[u]
    };
    firs[u]=N++;
}
void get1(int u,int v)
{
    ed[tot]=(node)
    {
        v,first[u]
    };
    first[u]=tot++;
}
void init()//初始化
{
    mem(low,0);
    mem(pre,0);
    clock_pre=clock_low=0;
    mem(firs,-1);
    mem(first,-1);
    mem(vis,0);
    mem(sccinq,0);
    mem(sccno,0);
    N=0;
    mem(inq,0);
    tot=0;
}

void Trajan(int x)//Trajan算法
{
    pre[x]=low[x]=++clock_low;
    s.push(x);
    for(int i=firs[x]; ~i; i=edge[i].nex)
    {
        int v=edge[i].v;
        if(!pre[v])
        {
            Trajan(v);
            low[x]=min(low[v],low[x]);
        }
        else if(!sccno[v])
            low[x]=min(low[x],pre[v]);
    }
    if(low[x]==pre[x])//重新建点
    {
        clock_pre++;
        while(1)
        {
            int y=s.top();
            s.pop();
            sccno[y]=clock_pre;
            sccinq[clock_pre]++;
            if(y==x)
                break;
        }
    }
}

void dfs(int s)//深搜
{
    if(first[s]==-1)
    {
        inq[s]=sccinq[s];
        return ;
    }
    for(int i=first[s]; ~i; i=ed[i].nex)
    {
        int v=ed[i].v;
        if(!inq[v])
            dfs(v);
        inq[s]=max(inq[s],inq[v]+sccinq[s]);
    }
    return ;
}
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        init();
        for(int i=0; i<m; i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            get(u,v);
        }
        for(int i=1; i<=n; i++)//缩点
        {
            if(!pre[i])
                Trajan(i);
        }
        for(int i=1; i<=n; i++)
        {
            for(int j=firs[i]; ~j; j=edge[j].nex)
            {
                int u=i,v=edge[j].v;
                if(sccno[u]!=sccno[v])//重新建边
                    get1(sccno[u],sccno[v]),vis[sccno[v]]=1;
            }
        }
        int ans=0;//记录答案
        for(int i=1; i<=clock_pre; i++)
        {
            if(!vis[i])//找缩点后,入度为0的点,因为一定是从入度为零的点开始的
            {
                dfs(i);
                ans=max(ans,inq[i]);
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
查看评论

2018湖北省赛网络赛H: GSS and OJ Submissions(分块)

2018湖北省赛网络赛H: GSS and OJ Submissions(分块) 一道神奇的分块题目 之前没怎么见过这种类型的 长见识了...
  • f2935552941
  • f2935552941
  • 2018年04月16日 21:06
  • 20

今日头条杯 2018 年首届湖北省大学生程序设计竞赛 (网络赛)Problem B.(计算几何)

Problem B. GSS and Interesting SculptureInput file: standard inputOutput file: standard outputTime l...
  • qq_41593380
  • qq_41593380
  • 2018年04月15日 20:11
  • 137

11.1-11.2欢乐爆零赛总结

总结
  • qq_37321281
  • qq_37321281
  • 2017年11月02日 21:34
  • 88

i春秋百度杯CTF比赛2016年12月场writeup

2016年i春秋百度杯CTF比赛12月场writeup
  • hubuguia
  • hubuguia
  • 2017年01月01日 21:52
  • 2993

赛博地球杯线下赛WEB_RCE Write_up

这次参与赛博地球杯线下赛出题,看到巨佬们强还是强啊,先膜一下,然后献上自己的出题思路,萌新出题,轻喷 !!! 第一步、登录 查看网站发现网站无法登录,并且根据robots.txt能发现hint...
  • yaofeiNO1
  • yaofeiNO1
  • 2018年01月30日 11:17
  • 123

百度杯2017年春秋欢乐赛

百度杯CTF2017年春秋欢乐赛第一场
  • hubuguia
  • hubuguia
  • 2017年01月16日 20:18
  • 1212

WP 4 i春秋_2017年春秋欢乐赛

时间 象棋 时间 多线程、爆破 这道题目给出如下源码
  • segOt
  • segOt
  • 2017年04月20日 09:21
  • 971

2018天梯赛总结

2018天梯赛总结    2018年的天梯赛结束了,第一次参加天梯赛,作为一个大二的学生,在郑轻参加了华中赛区的比赛,成绩还是不太好意思拿出来亮相的,只是得了八百出头,还好队伍里有一个大三的学姐撑着,...
  • qq_38620461
  • qq_38620461
  • 2018年04月03日 11:18
  • 133

2018美国数学建模ICM F题翻译:Problem F: Cost of Privacy

电子传播和社交媒体的普及和依赖已经变得普遍。其中一个结果是,有些人似乎愿意分享关于他们的个人交互,关系,购买,信仰,健康和运动的私人信息(PI),而另一些人则将这些隐私保护在这些方面非常重要和有价值。...
  • bat67
  • bat67
  • 2018年01月20日 09:37
  • 2683

2016河南省第九届ACM程序设计竞赛[正式赛四]

2016河南省第九届ACM程序设计竞赛[正式赛四] -0:12:10 Overview ProblemStatusRank Curren...
  • wanghandou
  • wanghandou
  • 2016年04月13日 13:49
  • 2483
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 1854
    排名: 2万+
    Flag Counter
    最新评论