样例过了,全wa,心态崩了
查看原帖
样例过了,全wa,心态崩了
425051
超级赛亚人楼主2021/8/19 14:06
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct edge{
	int to,w;
};
vector <edge> v[100001],v1[100001];
int head[1001],cnt,f[1001],book[1001],sum;
queue <int> q;
int main()
{
	memset(f,127,sizeof(f));
	cin>>n>>m;
	int a,b,c;
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d %d",&a,&b,&c);
		v[a].push_back((edge){b,c});
	}
	q.push(1);
	f[1]=0;
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		if(book[x]==1)
		continue;
		book[x]=1;
		int to,w;
		for(int i=0;i<v[x].size();i++)
		{
			to=v[x][i].to;
			w=v[x][i].w;
			f[to]=min(f[to],f[x]+w);
			q.push(to);
		}
	}
	for(int i=2;i<=n;i++)
	sum+=f[i];
	memset(f,127,sizeof(f));
	memset(book,0,sizeof(book));
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<v[i].size();j++)
		{
			v1[v[i][j].to].push_back((edge){i,v[i][j].w});
		}
	}
	q.push(1);
	f[1]=0;
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		if(book[x]==1)
		continue;
		int to,w;
		for(int i=0;i<v1[x].size();i++)
		{
			to=v1[x][i].to;
			w=v1[x][i].w;
			f[to]=min(f[to],f[x]+w);
			book[x]=1;
			q.push(to);
		}
	}
	for(int i=2;i<=n;i++)
	sum+=f[i];
	cout<<sum;
}
2021/8/19 14:06
加载中...