1 条题解

  • 0
    @ 2026-9-23 0:41:53

    贪心+floyd

    这道题很显然 先求一遍多源最短路

    1.记录有稻草的点

    2.floyd(求当前路径最小限制的最大值)

    3.把1到(有稻草的点)的限制进行排序

    4.从小到大选择 如果比当前体重大就ans++

    #include<bits/stdc++.h>
    using namespace std;
    int d[101],dd[101],mp[101][101];
    int main()
    {
    	int n,m,c;
    	cin>>n>>m>>c;
    	for(int i=1;i<=c;i++)
    	{
    		cin>>d[i];
    	}
    	for(int i=1;i<=m;i++)
    	{
    		int x,y,z;
    		cin>>x>>y>>z;
    		mp[x][y]=z;
    		mp[y][x]=z;
    	}
    	for(int i=1;i<=n;i++)mp[i][i]=1433223;
    	for(int k=1;k<=n;k++)
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=n;j++)
    				mp[i][j]=max(mp[i][j],min(mp[i][k],mp[k][j]));
    	int ans=0;
    	for(int i=1;i<=c;i++)
    		dd[i]=mp[1][d[i]];
    	sort(dd+1,dd+1+c);
    	for(int i=1;i<=c;i++)
    	{
    		if(dd[i]>ans)
    		ans++;
    	}
    	cout<<ans;
    }
    
    
    
    • 1

    【多源最短路floyd 】[USACO04OPEN] Cave Cows 1

    信息

    ID
    2191
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者