zoukankan      html  css  js  c++  java
  • 【CF-1362】D. Johnny and Contribution

    D. Johnny and Contribution

    题意

    给出n个顶点,m条边的图,现在要为这n个点填数字,规则如下。

    顶点u填的数字 是 没有出现在和u相连的顶点中的最小数字。

    如果和u相连的数字都没填数字,那么u就填1。

    给出n个顶点期望填的数字,问是否存在一种填的顺序,使得n个顶点的数字和期望的数字一样。

    题解

    按照期望的数字从小往大填,同一个数字,填的顺序无所谓。

    如果两个相连的顶点期望的数字一样,肯定不存在。

    如果 u 上可以填比 期望数字 更小的值,肯定不存在。

    除了这两种情况,都可以,按照期望数字从小到大输出顶点编号即可。

    代码

    #include<bits/stdc++.h>
    #define pb push_back
    using namespace std;
    const int N=5e5+10;
    const int mod=1e9+7;
    const int inf=0x3f3f3f3f;
    typedef unsigned long long ull;
    typedef long long ll;
    
    vector<int>vec[N],col[N],ans;
    int arr[N],vis[N];
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            vec[u].pb(v);
            vec[v].pb(u);
        }
        for(int i=1;i<=n;i++)
        {
            int tmp;
            scanf("%d",&tmp);
            arr[i]=tmp;
            col[tmp].pb(i);
            if(tmp>n)
            {
                puts("-1");
                return 0;
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int u:col[i])
            {
                int num=0;
                for(int v:vec[u])
                {
                    if(vis[arr[v]]!=u&&arr[v]<=i)
                    {
                        num++;
                        vis[arr[v]]=u;
                    }
                }
                if(num==i-1&&vis[i]!=u)
                    ans.pb(u);
                else
                {
                    puts("-1");
                    return 0;
                }
            }
        }
        for(int u:ans) printf("%d ",u);
        printf("
    ");
        return 0;
    }
    
  • 相关阅读:
    hdu 1142 用优先队列实现Dijkstra
    POJ 2063 Investment 完全背包
    POJ 3260 多重背包+完全背包
    bignum 大数模板
    POJ 3468(树状数组的威力)
    POJ 3468 线段树裸题
    hdu 1058 Humble Numbers
    CodeForces 185A 快速幂
    POJ 1990 MooFest 树状数组
    设计模式(20)策略模式
  • 原文地址:https://www.cnblogs.com/valk3/p/13067606.html
Copyright © 2011-2022 走看看