工厂的烦恼

工厂的烦恼

Description

某工厂发现厂里的机器在生产产品时要消耗大量的原材料,也就是说,有大量的原材料变成了废物。因此厂里想找出消耗原材料最大的一条生产线路进行改造,以降低成本。厂里的生产线路是一个有向无环网络,有N台机器分别代表网络中的N个结点。弧< I,j >(i < j)表示原材料从机器i传输到机器j的损耗数量。

Input

第一行是两个整数N,M(N<=100,M<=1000),分别表示网络的结点个数和弧数。第二行至M+1行,每行三个整数A,B,C,表示弧上的损耗为C。

Output

仅一个整数,为损耗最大的线路的损耗量。

Sample Input

5 5
1 2 2
2 4 9
1 3 7
3 4 1
4 5 6
Sample Output

17

因为这道题数据太小,本人只打了Floyd,没打SPFA!
唯一要注意的是,把常规的最小改为最大。然后在暴力枚举每两个点,求出最大的线路的损耗量

code:

#include<cstdio>
#include<iostream>
using namespace std;
int a[110][110];
int main()
{
	memset(a,0,sizeof(a));
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		a[u][v]=w;
	}
	for(int k=1;k<=n;k++)
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
		if(i!=j&&i!=k&&j!=k&&a[i][j]<a[i][k]+a[k][j]&&a[i][k]!=0&&a[k][j]!=0) a[i][j]=a[i][k]+a[k][j];
	int maxn=0;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
		if(i!=j&&a[i][j]>maxn) maxn=a[i][j];
	cout<<maxn<<endl;
	return 0;
} 

谢谢

发布了46 篇原创文章 · 获赞 38 · 访问量 1245
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览