zoukankan      html  css  js  c++  java
  • ICPC-CAMP day1 D.Around the world

    Around the world

    题目连接:

    Description

    给你一个n*n的矩阵,然后a[i][j]表示i,j是否有一条边

    然后让你构造一个序列,使得i到(i+1)%n这两个点之间最多经过k个边

    Input

    n<=500,k>=3

    Output

    n个数

    Sample Input

    4 3
    0100
    1010
    0101
    0010

    Sample Output

    1 3 2 4

    Hint

    题意

    题解:

    构造很简单(雾

    我们随便拿一个dfs一波,然后搜的时候,深度为奇数的时候,就输出

    回溯的时候,深度为偶数的时候,就输出

    然后就AC了

    这样构造,显然最远的两个点的距离最多为3

    太神了

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    vector<int> E[505];
    int n,k;
    char str[505];
    int vis[505];
    void dfs(int x,int deep)
    {
        vis[x]=1;
        if(deep%2==1)
            cout<<x+1<<" ";
        for(int i=0;i<E[x].size();i++)
        {
            int v = E[x][i];
            if(vis[v])continue;
            dfs(v,deep+1);
        }
        if(deep%2==0)
            cout<<x+1<<" ";
    }
    int main()
    {
        scanf("%d%d",&n,&k);
        for(int i=0;i<n;i++)
        {
            scanf("%s",str);
            for(int j=0;j<n;j++)
                if(str[j]=='1')
                    E[i].push_back(j);
        }
        dfs(0,1);
    }
  • 相关阅读:
    将Word、Excel内容显示在Winform界面
    C#操作Word
    WinForm控件小知识
    C#一些小知识点
    C#导入导出Excel表的数据
    tp控制数据库
    php缓存
    php环境搭建(转自发瑞)
    tp框架知识集锦(3.2)
    用smarty模板实现数据的显示修改以及分页
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5158821.html
Copyright © 2011-2022 走看看