A - Prime Graph
题意:给定一个n,构造一张图,使得所有点度数为素数,边的总数为素数,无自环,无重边,输出方案。
思路:可不严谨认为每个点连2条边,和每个点连三条边这个区间内,必然有素数。
先将图构造为一个环,然后将对角点连一条边,组成度数为三的点。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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 ",prime[pos]); for (register int i = 1; i <= n-1; i++) { printf("%d %d ",i,i+1); } printf("%d 1 ",n); int num = prime[pos] - n; for (register int i = 1; i <= num; i++) { printf("%d %d ",i,i+n/2); } return 0; }
D - Delivery Route
题意:一张图,求源点到其他点最短路,有负边,有无向边和有向边,无向边 边权不可能为负。
思路:spfa 会TLE,