• pipioj 1211: 小镇购物(bfs)


    http://www.pipioj.online/problem.php?id=1211

     1 #define IO std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
     2 #define bug(x) cout<<#x<<" is "<<x<<endl
     3 #include <bits/stdc++.h>
     4 #define iter ::iterator
     5 using namespace  std;
     6 typedef long long ll;
     7 typedef pair<int,ll>P;
     8 #define pb push_back
     9 #define mk make_pair
    10 #define se second
    11 #define fi first
    12 #define rs o*2+1
    13 #define ls o*2
    14 const ll mod=1e9+7;
    15 const int N=1e5+5;
    16 int T,n,m,k,s;
    17 
    18 int a[N],vis[N],b[N][105];
    19 
    20 vector<int>g[N];
    21 
    22 void bfs(int x){
    23     queue<int>q;
    24 
    25     for(int i=1;i<=n;i++){
    26         if(a[i]==x){
    27             vis[i]=1;
    28             b[i][x]=0;
    29             q.push(i);
    30         }
    31     }
    32 
    33     while(!q.empty()){
    34         int u=q.front();
    35         q.pop();
    36         for(int i=0;i<g[u].size();i++){
    37             int v=g[u][i];
    38             if(b[v][x]!=-1)continue;
    39             b[v][x]=b[u][x]+1;
    40             vis[v]=1;
    41             q.push(v);
    42         }
    43     }
    44 
    45 
    46 
    47 }
    48 
    49 
    50 int main(){
    51     IO;
    52     while(cin>>n>>m>>k>>s){
    53         for(int i=1;i<=n;i++){
    54             cin>>a[i];
    55             vis[i]=0;
    56             g[i].clear();
    57             memset(b[i],-1,sizeof(b[i]));
    58         }
    59         for(int i=1;i<=m;i++){
    60             int u,v;
    61             cin>>u>>v;
    62             g[u].pb(v);
    63             g[v].pb(u);
    64         }
    65         for(int i=1;i<=k;i++)bfs(i);
    66         for(int i=1;i<=n;i++){
    67             ll ans=0;
    68             sort(b[i]+1,b[i]+1+k);
    69             for(int j=1;j<=s;j++)ans+=b[i][j];
    70             if(i==n)cout<<ans<<endl;
    71             else cout<<ans<<" ";
    72         }
    73     }
    74 }
  • 相关阅读:
    工作中问题的总结1
    linux问题故障
    时间转换
    Tips
    总结
    方向
    同步&异步-阻塞&非阻塞
    IO 之 mark()、reset()
    GC日志分析
    JDK 部分工具使用方法
  • 原文地址:https://www.cnblogs.com/ccsu-kid/p/14509257.html
Copyright © 2020-2023  润新知