zoukankan      html  css  js  c++  java
  • Luogu P5022 旅行 搜索+贪心

    好吧。。。一直咕。。现在才过。。。被卡常卡到爆。。。

    写的垃圾版本,$n^2$无脑删边。。可以发现走出来的是棵树。。。更优秀的及数据加强版先咕着。。。一定写。qwq

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    #define ll long long
    #define R register int
    static char B[1<<15],*S=B,*D=B;
    #define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
    using namespace std;
    inline int g() {
        R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;
        do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
    } int n,m,tot;
    int ans[5010]; bool vis[5010],used[5010][5010];
    int w[5001][5001];
    inline void dfs1(int u) { vis[u]=true; ans[++tot]=u;
        for(R i=1,lim=w[u][0];i<=lim;++i) { R v=w[u][i];
            if(!vis[v]) dfs1(v);
        }
    } int s[5010]; int U,V;
    pair<int,int> e[5010];
    inline void dfs2(int u) { vis[u]=true; s[++tot]=u;
        for(R i=1,lim=w[u][0];i<=lim;++i) { R v=w[u][i];
            if((u==U&&v==V)||(u==V&&v==U)) continue; 
            if(!vis[v]) dfs2(v);
        }
    }
    inline bool ck() {for(R i=1;i<=n;++i) if(s[i]!=ans[i]) return ans[i]>s[i];  return false;}
    signed main() {
        n=g(),m=g(); for(R i=1,u,v;i<=m;++i) u=g(),v=g(),w[u][++w[u][0]]=v,w[v][++w[v][0]]=u,e[i]=make_pair(u,v);
        for(R i=1;i<=n;++i) sort(w[i]+1,w[i]+w[i][0]+1);
        if(m==n-1) {
            dfs1(1); for(R i=1;i<=n;++i) printf("%d ",ans[i]);
        } else { 
            for(R i=1;i<=n;++i) ans[i]=n-i+1;
            for(R i=1;i<=m;++i) {
                tot=0; memset(vis,0,sizeof(vis)); U=e[i].first,V=e[i].second; 
                dfs2(1); if(tot==n&&ck()) memcpy(ans,s,sizeof(s));
            } for(R i=1;i<=n;++i) printf("%d ",ans[i]);
        }
    }

    2019.06.04

  • 相关阅读:
    APPIUM Android 定位方式
    SQL Server 根据存储过程的结果集创建临时表
    Ubuntu18.04 设置开机自启动服务
    ubuntu-18.04 (各版本镜像下载) 及的环境初始化配置
    CentOS 7 编译安装PHP5.6.31
    Centos7 编译安装 MySQL 5.5.62
    Windows 2008 R2 远程桌面连接记录(客户端IP)
    CentOS crontab定时任务
    CentOS 7 安装MySql 5.5.60
    SQL Server 数据库错误码解释
  • 原文地址:https://www.cnblogs.com/Jackpei/p/10970996.html
Copyright © 2011-2022 走看看