样例都过不了,求史dalao(打表)救
  • 板块灌水区
  • 楼主Zxsoul
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/10/11 19:45
  • 上次更新2023/11/5 11:01:56
查看原帖
样例都过不了,求史dalao(打表)救
230808
Zxsoul楼主2020/10/11 19:45
/*
  BZQ
  2020/10/11
  P1250 种树
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int manx = 1e5;


struct Edge{
	int u,v,nxt,w;
}e[manx];
int head[manx],cnt,n,m;
void add(int u,int v,int w){
	e[++cnt].nxt = head[u];
	e[cnt].u  = u;
	e[cnt].v = v;
	e[cnt].w = w;
	head[u] = cnt;
}


queue<int>q;
int dis[manx],in[manx];
bool vis[manx];
void spfa(int u){
	memset(vis,false,sizeof(vis));
	vis[u] = true;
	memset(dis,-1,sizeof(dis));
	dis[u] = 0;
	memset(in,0,sizeof(in));
	in[u] = 1;
	q.push(u);
	while(!q.empty()){
		u  = q.front();
		vis[u] = false;
		q.pop();
		for(int i = head[u];i;i = e[i].nxt){
			int v = e[i].v;
			int w = e[i].w;
			if(dis[u] + w > dis[v])
			{
				dis[v] = dis[u] + w;
				if(!vis[v]){
					q.push(v);
					vis[v] = true;
					in[v]++;
					if(in[v] > n + 1){
						cout<<"no";
					}
				}
			}
		}
	}
	
}


int main(){
	cin >> n >> m;
	for (int i = 1;i <= m; i++){
		int a,b,c;
		cin>>a>>b>>c;
		add(b,a,c);
	}
	for (int i = 1;i <= n;i ++){
		add(0,i,0);
	}
	spfa(0);
	cout<<dis[n-1];
}

2020/10/11 19:45
加载中...