首页 > 其他分享 >test

test

时间:2023-06-04 23:14:22浏览次数:29  
标签:return int st color bool test dist

1

  1. prim算法
    int n; // n表示点数
    int g[N][N]; // 邻接矩阵,存储所有边
    int dist[N]; // 存储其他点到当前最小生成树的距离
    bool st[N]; // 存储每个点是否已经在生成树中

    // 如果图不连通,则返回INF(值是0x3f3f3f3f), 否则返回最小生成树的树边权重之和
    int prim()
    {
    memset(dist, 0x3f, sizeof dist);

     int res = 0;
     for (int i = 0; i < n; i ++ )
     {
     	int t = -1;
     	for (int j = 1; j <= n; j ++ )
     		if (!st[j] && (t == -1 || dist[t] > dist[j]))
     			t = j;
     	
     	if (i && dist[t] == INF) return INF;
     	
     	if (i) res += dist[t];
     	st[t] = true;
     	
     	for (int j = 1; j <= n; j ++ ) dist[j] = min(dist[j], g[t][j]);
     }
     
     return res;
    

    }

  2. Kruskal算法
    int n, m; // n是点数,m是边数
    int p[N]; // 并查集的父节点数组

    struct Edge // 存储边
    {
    int a, b, w;

     bool operator< (const Edge &W)const
     {
     	return w < W.w;
     }
    

    }edges[M];

    int find(int x) // 并查集核心操作
    {
    if (p[x] != x) p[x] = find(p[x]);
    return p[x];
    }

    int kruskal()
    {
    sort(edges, edges + m);

     for (int i = 1; i <= n; i ++ ) p[i] = i;    // 初始化并查集
     
     int res = 0, cnt = 0;
     for (int i = 0; i < m; i ++ )
     {
     	int a = edges[i].a, b = edges[i].b, w = edges[i].w;
     	
     	a = find(a), b = find(b);
     	if (a != b)		// 如果两个连通块不连通,则将这两个连通块合并
     	{
     		p[a] = b;
     		res += w;
     		cnt ++ ;
     	}
     }
     
     if (cnt < n - 1) return INF;
     return res;
    

    }

  3. 染色法判别二分图
    int n; // n表示点数
    int h[N], e[M], ne[M], idx; // 邻接表存储图
    int color[N]; // 表示每个点的颜色,-1表示为染色,0表示白色,1表示黑色

    // 参数:u表示当前节点,father表示当前节点的父节点(防止向树根遍历),c表示当前点的颜色
    bool dfs(int u, int father, int c)
    {
    color[u] = c;
    for (int i = h[u]; i != -1; i = ne[i])
    {
    int j = e[i];
    if (color[j] == -1)
    {
    if (!dfs(j, u, !c)) return false;
    }
    else if (color[j] == c) return false;
    }

     return true;
    

    }

    bool check()
    {
    memset(color, -1, sizeof color);
    bool flag = true;
    for (int i = 1; i <= n; i ++ )
    if (color[i] == -1)
    if (!dfs(i, -1, 0))
    {
    flag = false;
    break;
    }
    return flag;
    }

  4. 匈牙利算法
    int n; // n表示点数
    int h[N], e[M], ne[M], idx; // 邻接表存储所有边
    int match[N]; // 存储每个点当前匹配的点
    bool st[N]; // 表示每个点是否已经被遍历过

    bool find(int x)
    {
    for (int i = h[x]; i != -1; i = ne[i])
    {
    int j = e[i];
    if (!st[j])
    {
    st[j] = true;
    if (match[j] == 0 || find(match[j]))
    {
    match[j] = x;
    return true;
    }
    }
    }

     return false;
    

    }

    // 求最大匹配数
    int res = 0;
    for (int i = 1; i <= n; i ++ )
    {
    memset(st, false, sizeof st);
    if (find(i)) res ++ ;
    }

标签:return,int,st,color,bool,test,dist
From: https://www.cnblogs.com/mostimali/p/17456639.html

相关文章

  • AtCoder Beginner Contest 287 G Balance Update Query
    洛谷传送门AtCoder传送门线段树上二分入门题。考虑一个贪心:每次询问按\(a_i\)从大到小选。正确性显然。考虑动态开点线段树,每个结点\(a_i\in[l,r]\)存\(\sum\limits_{a_i\in[l,r]}b_i\)和\(\sum\limits_{a_i\in[l,r]}a_ib_i\)。线段树上二分找到第一个\(......
  • AtCoder Beginner Contest 258 G Grid Card Game
    洛谷传送门AtCoder传送门记\(b_i=\sum\limits_{j=1}^ma_{i,j},c_j=\sum\limits_{i=1}^na_{i,j}\)。首先考虑这样一个事情,就是对于\(b_i\le0\)的行有没有可能被选。如果选了它:如果没有选任何列,选这一行肯定不优;如果选了若干列,根据题目的要求,这若干列与这......
  • AtCoder Regular Contest 145
    A答案为Yes当且仅当$s[1]\ne$A或$s[n]\ne$B。注意判\(n=2\)。BAlice可胜利当且仅当\(n\gea\wedgen\bmoda<b\)。C显然我们应该凑\((2i-1,2i)\)。那么我们用一个括号序列描述\(2i-1\)和\(2i\),不难发现答案为\[\frac{\binom{2n}{n}}{n+1}......
  • AtCoder Beginner Contest 304 ABCDE
    AtCoderBeginnerContest304感觉手速场,后\(80\)分钟纯纯坐牢,A-FirstPlayer一些人坐成一个环,从年龄最小开始输出名字constintN=2e5+10;intn;strings[N];inta[N];voidsolve(){intm=1e9+2,p=1;cin>>n;for(inti=1;i<=n;......
  • 06web安全学习---信息搜集(The Soul of penetration test)
    声明学习网络安全,必须要坚守一个原则,那就是一定一定一定要遵守《中华人民共和国网络安全法》,做一个遵纪守法的好公民,不要利用技术做一些违法犯罪的事情,否则后果自负,请切记!!!一、为什么要信息收集(踩点)目的就是找到薄弱点进行attack;二、信息收集方向三、巧用网络空间搜索引擎 四、信息......
  • AtCoder Beginner Contest 304
    A-FirstPlayer(abc304a)题目大意依次给定每个人的姓名和年龄,排成一圈。从年龄最小的人依次输出姓名。解题思路找到年龄最小的,依次输出就好了。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_......
  • test
    [toc]##2023-06-01###dailytask###todotask###bursttask观测win多线程全角半角字符测试[设计模式信息收集](D:\userdata\notes\workspace\workshop\设计模式.md)##2023-06-02###dailytask###todotask###bursttask[风扇转速与温度测试](D:\userdata\not......
  • test
    v=function(a,h,_){$("#stc_warm_tip").empty(),"070000"!=_&&require(["/i/apps/pageapps/pwarm/tpl/warmtip_444a516.js","/i/apps/pageapps/pwarm/tpl/noractivy_661d9......
  • 2023-06-02 用户访问cgi-bin/test-cgi时会泄露远端服务器名
    问题描述:百度智能云给我发了一条短信,说是我的服务器有个cgi安全漏洞:用户访问cgi-bin/test-cgi时会泄露远端服务器名,服务器地址等敏感信息,黑客可以利用获得的敏感信息执行下一步的攻击操作。我以前部署阿里云怎么就没这个问题?难道是宝塔的问题??现在我的服务器是用宝塔管理的,至......
  • [转]XMPP协议之Socket5 Bytestream文件传输
    [b]XMPP协议之Socket5Bytestream文件传输[/b]SOCK5流协商的建立一部分通过XMPPXML流,一部分通过一个独立的socket实际的文件传输发生在创建的socket上。第一步:[发送端]发送SI(流协商)包AA:<iqtype='set'id='gaim8215f9ef'[email=to=]to='[email protected]/......