답안 #997004

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
997004 2024-06-11T14:56:29 Z modwwe Cities (BOI16_cities) C++17
100 / 100
1838 ms 46276 KB
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2")
#include<bits/stdc++.h>
#define int long long
//#define ll long long
#define down cout<<'\n';
#define NHP     ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
const int inf=1e9;
void phongbeo();
const int mod2=1e9+7;
const int  mod1=998244353;
struct icd
{
    int a,b;
};
struct ib
{
    int a;
    int b;
};
struct ic
{
    int a,b,c;
};
struct id
{
    int a,b,c,d;
};
struct ie
{
    int a,b,c, d,e,f;

};
int n,m,s1,s2,s4,s3,sf,k,r,mid,s5,s6,mx,s7,s8,s9,mx2,res,dem2=0,dem=0,l;
int  i,s10,s12;
int el=29;
main()
{
#ifndef ONLINE_JUDGE
    //fin(task),fou(task);
#endif
    NHP
    /// cin>>s1;
    // modwwe
    phongbeo(),down
    checktime
}
struct cmp
{
    bool operator()(ib a,ib b)
    {
        return a.a>b.a;
    }
};
int a[100001];
vector<ib> v[100001];
int dp[100001][32];
bool c[100001];
void phongbeo()
{
    cin>>n>>k>>m;
    s2=0;
    priority_queue<ib,vector<ib>,cmp> p;

    for(int i=1; i<=n; i++)
        for(int j=1; j<(1<<k); j++)
            dp[i][j]=1e18;
    for(int i=0; i<k; i++)
        cin>>a[i],dp[a[i]][(1<<i)]=0;
    for(int i=1; i<=m; i++)
    {
        cin>>l>>r>>s3;
        v[l].pb({r,s3});
        v[r].pb({l,s3});
    }
    for(int j=1; j<(1<<k); j++)
    {
        for(int i=0; i<k; i++)
        {
            if(bit(j,i))
            {
                for(int z=1; z<=n; z++){
                    dp[z][j]=min(dp[z][(j-(1<<i))]+dp[z][(1<<i)],dp[z][j]);
                    }
                }
        }
        if(j==(1<<k)-1)
        { s2=1e18;
             for(int i=1;i<=n;i++)
         s2=min(s2,dp[i][j]);
         cout<<s2;
         exit(0);
        }
        for(int i=1;i<=n;i++){
            if(dp[i][j]!=1e18)
        p.push({dp[i][j],i});
         c[i]=0;
        }
        while(!p.empty())
        {
             ib u=p.top();
              p.pop();
              if(c[u.b]) continue;
              c[u.b]=1;
              dp[u.b][j]=min(dp[u.b][j],u.a);
              for(auto x:v[u.b])
                if(!c[x.a])
              p.push({u.a+x.b,x.a});
        }
    }
}

Compilation message

cities.cpp:46:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   46 | main()
      | ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 3164 KB Output is correct
2 Correct 1 ms 3156 KB Output is correct
3 Correct 1 ms 3164 KB Output is correct
4 Correct 1 ms 3164 KB Output is correct
5 Correct 1 ms 3164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 410 ms 46020 KB Output is correct
2 Correct 363 ms 45892 KB Output is correct
3 Correct 194 ms 36544 KB Output is correct
4 Correct 216 ms 21968 KB Output is correct
5 Correct 159 ms 42728 KB Output is correct
6 Correct 97 ms 21696 KB Output is correct
7 Correct 3 ms 5464 KB Output is correct
8 Correct 2 ms 5376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 5468 KB Output is correct
2 Correct 6 ms 5468 KB Output is correct
3 Correct 5 ms 5212 KB Output is correct
4 Correct 5 ms 5468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 917 ms 46276 KB Output is correct
2 Correct 862 ms 44944 KB Output is correct
3 Correct 484 ms 36660 KB Output is correct
4 Correct 649 ms 35740 KB Output is correct
5 Correct 520 ms 23632 KB Output is correct
6 Correct 438 ms 24224 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1838 ms 44744 KB Output is correct
2 Correct 1828 ms 44996 KB Output is correct
3 Correct 1827 ms 44980 KB Output is correct
4 Correct 997 ms 36416 KB Output is correct
5 Correct 1284 ms 34756 KB Output is correct
6 Correct 933 ms 24492 KB Output is correct
7 Correct 881 ms 23012 KB Output is correct