zoukankan      html  css  js  c++  java
  • zzulioj 1734 堆

    比赛的时候不会写,想不到DFS,一直以为需要二叉树或者建堆什么的,也没学,后来才明白这个题

    代码:

    #include <cstdio>  
    #include <cstring>  
    #include <cmath>  
    #include <queue>  
    #include <vector>  
    #include <algorithm>  
    using namespace std;  
    int value[110];  
    vector<int > map[110];  
    int n;  
    int sum;//查询节点数   
    int vis[110];  
    void getmap()  
    {  
        int x, y;  
        int a, b;  
        for(int i = 1; i <= n; i++)  
        {  
            scanf("%d", &value[i]);  
            map[i].clear();  
        }  
        for(int i = 0;i < n-1; i++)  
        {  
            scanf("%d%d", &x, &y);  
            a = max(x,y);  
            b = min(x,y);  
            map[b].push_back(a);  
        }  
    }  
    void dfs(int node)  
    {  
        for(int i = 0; i < map[node].size(); i++)  
        {  
            int next = map[node][i];  
            if(!vis[next] && value[next] >= value[node])  
            {  
                vis[next] = 1;  
                sum++;  
                dfs(next);  
            }  
        }  
    }  
    int main()  
    {  
        int t;  
        int i, j;  
        scanf("%d", &t);  
        while(t--)  
        {  
            scanf("%d", &n);  
            getmap();  
            memset(vis, 0, sizeof(vis));  
            sum = 1;  
            dfs(1);  
            if(sum == n)  
            printf("Yes
    ");  
            else  
            printf("No
    ");  
        }  
        return 0;  
    }  
  • 相关阅读:
    简单测试
    纸玫瑰
    Java 字符串编码 (保存成txt测试)
    创建 Filter
    jee中文名图片+tomcat ==> 中文乱码的另类处理(未成功)
    dom4j_01_02
    dom4j_01_01
    Java 字符串编码
    websocket

  • 原文地址:https://www.cnblogs.com/nr1999/p/8903067.html
Copyright © 2011-2022 走看看