1 条题解
-
0
贪心+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
信息
- ID
- 2191
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者