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;
}