专栏文章

mb

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miq0j450
此快照首次捕获于
2025/12/03 20:58
3 个月前
此快照最后确认于
2025/12/03 20:58
3 个月前
查看原文
CPP
#include<bits/stdc++.h>
#define inf 0x7fffffff
#define mod 998244353
#define ll long long
#define MaxM 500010
#define MaxN 100010
#define quickly ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
int head[MaxN],dis[MaxN],cnt;
bool vis[MaxN];
inline int read(){
	int s=0,w=1;
	char ch=getchar();
	while (ch<'0'||ch>'9'){
		if (ch=='-')
			w=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s*w;
}
//dijkstra:
struct edge{
	int to,dis,next;
}e[MaxM];
inline void add(int u,int v,int d){
	e[++cnt].dis=d;
	e[cnt].to=v;
	e[cnt].next=head[u];
	head[u]=cnt;
}
struct node{
	int dis;
	int pos;
	bool operator <(const node &x)const{
		return x.dis < dis;
	}
};
std::priority_queue<node> q;
inline void dijkstra(){
	dis[1]=0;
	q.push((node){0,1});
	while(!q.empty()){
		node tmp=q.top();
		q.pop();
		int x=tmp.pos;
		//		int d=tmp.dis;
		if(vis[x])
			continue;
		vis[x]=1;
		for(int i=head[x];i;i=e[i].next){
			int y=e[i].to;
			if(dis[y]>dis[x]+e[i].dis){
				dis[y]=dis[x]+e[i].dis;
				if(!vis[y]){
					q.push((node){dis[y],y});
				}
			}
		}
	}
}
struct bcj{ 
	int len;      
	int q[30010],si[30010];           
	void init(int lenn){       
		len=lenn;
		for(int i=1;i<=len;i++)
			q[i]=i,si[i]=1;
	}
	int Find(int t){        
		if(q[t]==t) return t;
		int tt=Find(q[t]);
		q[t]=tt;
		return tt;
	}
	void add(int a,int b){  
		int a_1=Find(a),b_1=Find(b);
		q[a_1]=b_1;
		si[b_1]+=si[a_1];
	}
	int num(){
		int ans;
		for(int i=1;i<=len;i++)
			if(q[i]==i)
				ans++;
		return ans;
	}
	int Long(int a){
		return si[Find(a)];
	}
	bool same(int a,int b){
		int a_1=Find(a),b_1=Find(b);
		return a_1==b_1;
	}
};
int main(){
	//	freopen("a.in","r",stdin);
	//	freopen("a.out","w",stdout);
	
	
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...