U81206 【模板】链式前向星 OLE错误疑问
  • 板块学术版
  • 楼主morningflying
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/10/29 21:39
  • 上次更新2023/11/5 09:33:30
查看原帖
U81206 【模板】链式前向星 OLE错误疑问
254666
morningflying楼主2020/10/29 21:39

QAQ先讲一下状况吧: 首先在学习的时候看到“链式前向星”这个算法,来洛谷搜相关题目照着教案上的模板打了一遍(在打代码的过程中理解算法思路pwp) 打代码、提交、AC一片,唯一美中不足的就是第一个测试点RE了 检查发现是数组开小了,改大后变OLE了…… 百度搜索到OLE指输出文件过大……(QAQ?可答案就是那么多呀) 题目中有一句 “特殊的,若该点无出边,单独一个空行” 在代码中使u==v(原地踏步?)的情况去掉不加到路径的数组里去,然后全体WA了 翻阅题解记录发现很多人跟我一样死在了第一个测试点……QAQQ求各位大佬帮忙看看这可怜的孩子吧

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

const int M=4000005;
int n,m,flag;
struct edge{
	int v,d,nxt;
}e[M];
int head[M],cnt;
void insert(int u,int v,int d){
	e[cnt].v=v;
	e[cnt].d=d;
	e[cnt].nxt=head[u];
	head[u]=cnt++;
}
void insert2(int u,int v,int d){
	insert(u,v,d);
	insert(v,u,d);
}
void output(int n){
	for(int i=1;i<=n;i++){
		if(head[i]==-1)	printf("\n");
		for(int j=head[i];j!=-1;j=e[j].nxt){
			printf("%lld %lld %lld\n",i,e[j].v,e[j].d);
		}
	}
}
int main(){
	memset(head,-1,sizeof(head));
	cnt=0;
	scanf("%d %d %d",&n,&m,&flag);
	long long u,v,d;
	for(int i=1;i<=m;i++){
		scanf("%lld %lld %lld",&u,&v,&d);
		if(flag)	insert(u,v,d);
		else	insert2(u,v,d);
	}
	output(n);
	return 0;
}
2020/10/29 21:39
加载中...