답안 #578927

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
578927 2022-06-18T08:09:46 Z AGE Lutrija (COCI19_lutrija) C++14
0 / 70
1127 ms 251740 KB
#include<bits/stdc++.h>
#define F first
#define S second
#define int long long
#define pb push_back
using namespace std;
const int N=6e7,M=2e3,mod=1e9+7;
map<int,int>dist,p,okk;
map<int,vector<int>>adj;
int seive[N];
vector<int>primess;

bool is_prime(int x){

    for(int j=0;j<primess.size();j++){

            if(primess[j]>x)
                continue;

            if(x%primess[j]==0)
                return 0;
    }

    return 1;

}

main(){

    for(int i=2;i<=3e7;i++){

        if(seive[i]==1)
            continue;

        for(int j=i+i;j<=3e7;j+=i)
            seive[j]=1;

    }


    for(int i=2;i<=3e7;i++)
        if(seive[i]==0)
            primess.pb(i);

    vector<int>v;

    int a,b;
    cin>>a>>b;

    v.pb(a);
    v.pb(b);
    v.pb(a-2);
    v.pb(a+2);
    v.pb(b-2);
    v.pb(b+2);
    v.pb(2);


    for(int i=0;i<v.size();i++){

        if(is_prime(v[i])==0||v[i]==0||v[i]==1)
            continue;

        for(int j=0;j<v.size();j++){

            if(v[i]==v[j]||(is_prime(v[j])==0)||v[j]==0||v[j]==1)
                continue;

            int x=abs(v[i]-v[j]);

            if((is_prime(x)==0)||x==0||x==1)
                continue;

            adj[v[i]].pb(v[j]);
            adj[v[j]].pb(v[i]);

        }

    }

    queue<int>q;

    q.push(a);
    dist[a]=1;

    while(!q.empty()){

        int node=q.front();
        q.pop();

        for(auto x:adj[node])
            if(!dist[x])
                dist[x]=1,q.push(x),p[x]=node;

    }

    if(dist[b]==0){

        cout<<"-1"<<endl;
        return 0;

    }

    int node=b;
    vector<int>ans;

    while(node!=a){

        ans.pb(node);
        node=p[node];

    }

    ans.pb(a);
    reverse(ans.begin(),ans.end());

    cout<<ans.size()<<endl;

    for(int i=0;i<ans.size();i++)
        cout<<ans[i]<<" ";
    cout<<endl;

        return 0;
}

Compilation message

lutrija.cpp: In function 'bool is_prime(long long int)':
lutrija.cpp:15:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(int j=0;j<primess.size();j++){
      |                 ~^~~~~~~~~~~~~~~
lutrija.cpp: At global scope:
lutrija.cpp:28:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   28 | main(){
      | ^~~~
lutrija.cpp: In function 'int main()':
lutrija.cpp:59:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
lutrija.cpp:64:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |         for(int j=0;j<v.size();j++){
      |                     ~^~~~~~~~~
lutrija.cpp:119:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  119 |     for(int i=0;i<ans.size();i++)
      |                 ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 842 ms 251740 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 920 ms 251576 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 937 ms 251592 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 868 ms 251584 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 990 ms 251660 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 841 ms 251612 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1068 ms 251632 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1098 ms 251596 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1127 ms 251588 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1054 ms 251672 KB Output isn't correct
2 Halted 0 ms 0 KB -