首页 > 其他分享 >1042. 不邻接植花

1042. 不邻接植花

时间:2023-04-15 16:24:51浏览次数:45  
标签:1042 int 复杂度 vector 植花 邻接 花园

题目链接:1042. 不邻接植花

方法:位运算

解题思路

 根据题目可知,一个花园最多有 \(3\) 条边,因此每个花园一定可以有一个合适的种类,只需要与其邻接点的种类都不同即可,假设花的种类分别对应二进制位的第 \(1\)、\(2\)、\(3\)、\(4\)位(从低->高位),现在对于花园 \(u\),计算其所有邻接点花园构成的掩码 \(mask\),该花园花园的种类就等于其中某一位为 \(0\) 的那个种类。

代码

class Solution {
public:
    vector<int> gardenNoAdj(int n, vector<vector<int>>& paths) {
        vector<vector<int>> adj(n + 1);
        for (auto &path : paths) {
            int u = path[0], v = path[1];
            adj[u].push_back(v);
            adj[v].push_back(u);
        }
        vector<int> ans(n);
        for (int u = 1; u <= n; u ++ ) {
            int mask = 0;
            for (auto &v : adj[u]) mask |= 1 << ans[v - 1];
            for (int i = 1; i < 5; i ++ ) {
                if ((mask & (1 << i)) == 0) {
                    ans[u - 1] = i;
                    break;
                }
            }
        }

        return ans;
    }
};

复杂度分析

时间复杂度:\(O(n + m)\);
空间复杂度:\(O(n + m)\),邻接表的空间,\(n\) 个表头,存储 \(2m\) 条边。

标签:1042,int,复杂度,vector,植花,邻接,花园
From: https://www.cnblogs.com/lxycoding/p/17321309.html

相关文章

  • HDU 1042 N! (大整数阶乘)
    这道题开始并不会,是看了别人的代码,自己又改造了一下,代码如下:(PS:这个时候自带大整数运算的java就有优势了)#include<bits/stdc++.h>usingnamespacestd;constintN=20000+10;intans[N];voidfact(intn){ans[0]=ans[1]=1;inttot=1;for(inti=......
  • UVa 757 / POJ 1042 / East Central North America 1999 Gone Fishing (枚举&贪心&想
    757-GoneFishingTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=698http://poj.org/problem?id=1042Johnisgoingonafishingtrip.Hehas h hoursavailable( ),andther......
  • spfa求最短路——BFS,数组实现邻接表,数组实现队列
    题目描述题目来源AcWing给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。数据保证不存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个......
  • 读取txt文件创建邻接矩阵
    txt文本内容如下,要求使用这些数据来生成一个邻接矩阵0,2,4,22,65536,655362,0,1,6,65536,655364,1,0,1,4,6553622,6,1,0,10,565536,65536,4,10,0,365536,65536,6553......
  • 邻接矩阵、稀疏矩阵(torch, sparse, numpy)相互转换 [转载]
    原链接:邻接矩阵转稀疏矩阵邻接矩阵转稀疏矩阵Example:importscipy.sparseasspimportnumpyasnpimporttorchadj_matrix=torch.randint(0,2,(4,4))print(ad......
  • PAT Basic 1042. 字符统计
    PATBasic1042.字符统计1.题目描述:请编写程序,找出一段给定文字中出现最频繁的那个英文字母。2.输入格式:输入在一行中给出一个长度不超过1000的字符串。字符串由......
  • 邻接表 存储 vector
    图的建立有两种,邻接矩阵和邻接表。邻接矩阵适用于图较为密集,(稀疏图太浪费存储空间了),图如果较为稀疏,则使用邻接表为宜,dijkstra算法就是以邻接表为基础的。 有向无权图......
  • 邻居和邻接
    什么是邻居关系?1、在ospf协议中邻居关系就是指两台路由器之间进行hello报文交互后,建立的关系叫做邻居关系。2、该关系的建立包括down、init、2-way三种状态hello报文包含重......
  • 邻接法构建系统发育树中枝长的计算(Least-Square Estimation)
    Least-SquareEstimation刚刚用BioNJ跑完了一波数据,老板和我说这个算法其实挺简单的,你可以自己写一个(主要是BIONJ软件本身和Philip以及MEGA对输入文件要求都比较严,不方便......
  • 27.OSPF邻居和邻接关系
    网络类型是否和邻居建立邻接关系P2P是BroadcastDR于BDR、DRother建立邻接关系、DBR于DR建立邻接关系,DRother之间建立邻居关系(2-way)NBMA......