HZNU Training 28 for Zhejiang Provincial Competition 2020

A - Prime Graph

 CodeForces - 1178D 

题意:给定一个n,构造一张图,使得所有点度数为素数,边的总数为素数,无自环,无重边,输出方案。

思路:可不严谨认为每个点连2条边,和每个点连三条边这个区间内,必然有素数。

先将图构造为一个环,然后将对角点连一条边,组成度数为三的点。

#include <bits/stdc++.h>
using namespace std;
int n;
const int maxn = 10005;
int prime[maxn+5];
int is_prime[maxn+5];
int cnt;
void is_Prime() {
    is_prime[0] = is_prime[1] = 1;
    for (int i = 2; i <= 10000; i++) {
        if (!is_prime[i]) {
            prime[cnt++] = i;
            for (int j = 2 * i; j <= maxn; j += i) {
                is_prime[j] = 1;
            }
        }
    }
}
int main(){    
    is_Prime();
    scanf("%d",&n);
    int pos;
    for (int i = 0; i < maxn; i++) {
        if (prime[i] >= n) {
            pos = i;
            break;
        } 
    }
    printf("%d\n",prime[pos]);
    for (register int i = 1; i <= n-1; i++) {
        printf("%d %d\n",i,i+1);
    }
    printf("%d 1\n",n);
    int num = prime[pos] - n;
    for (register int i = 1; i <= num; i++) {
        printf("%d %d\n",i,i+n/2);
    }
    return 0;
}
View Code

D - Delivery Route 

计蒜客 - 42388 

题意:一张图,求源点到其他点最短路,有负边,有无向边和有向边,无向边 边权不可能为负。

思路:spfa 会TLE,

 

posted @ 2020-05-05 20:17  无声-黑白  阅读(148)  评论(0编辑  收藏  举报