站外题求助
  • 板块学术版
  • 楼主Forever1507
  • 当前回复9
  • 已保存回复9
  • 发布时间2021/2/1 22:27
  • 上次更新2023/11/5 03:58:40
查看原帖
站外题求助
359614
Forever1507楼主2021/2/1 22:27

HDU-1301,最小生成树板子,Debug了好久一直WA求助

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int t,n,head[5005],tot,dis[5005];
struct node{
	char to;
	int w,nxt;
}a[1000005];
void add(char u,char v,int w){
	tot++;
	a[tot].to=v;
	a[tot].w=w;
	a[tot].nxt=head[u];
	head[u]=tot;
}
bool vis[5005];
priority_queue<pair<int,char> >pq;
int main(){
	while(1){
		cin>>n;
		if(n==0)return 0;
		memset(dis,127,sizeof(dis));
		memset(vis,0,sizeof(vis));
		memset(head,0,sizeof(head));
		tot=0;
		for(int i=1;i<n;i++){
			char u,v;
			int m,w;
			cin>>u>>m;
			for(int j=1;j<=m;j++){
				cin>>v>>w;
				add(u,v,w);
				add(v,u,w);
			}
		}
		unsigned long long ans=0;
		dis['A']=0;
		pq.push(make_pair(0,'A'));
		int cnt=0;
		while(!pq.empty()&&cnt<n){
			char u=pq.top().second,d=pq.top().first;pq.pop();
			if(vis[u])continue;
			vis[u]=1;
			ans-=1ull*d;
			cnt++;
			for(int i=head[u];i!=0;i=a[i].nxt){
				if(a[i].w<dis[a[i].to]&&!vis[a[i].to]){
					dis[a[i].to]=a[i].w;
					pq.push(make_pair(-dis[a[i].to],a[i].to));
				}
			}
		}
		cout<<ans<<'\n';
	}
	return 0;
}

清空了,ull也开了,真DEBUG不动了

禁止wyy

2021/2/1 22:27
加载中...