幾乎是一道模板的最短路問題,但我們為了記錄答案的最小值,可以暴力列舉從1-n作為出發點,記錄下每個牧場有多少頭奶牛,然後求最短路,答案就是1-n號牧場最短路*該牧場奶牛數量之和,不斷取最小值就行。這道題在洛谷上用spfa可以ac,用floyd會tle 3個點,用不加優化dijkstra也許會tle 3個,這裡把三個**都貼上來,以供參考。
ac 100:spfa
#include#include#include#include#includeusing namespace std;
const int maxn=810;
const int maxm=1460;
int n,p,m;
int head[maxn],nnext[maxm*2],to[maxm*2],length[maxm*2],team[maxn],dis[maxn];
int tot,cow[510],cnt[maxn],s=0,t=0;
bool b[maxn];
int ans=1e9,q=0;
void add(int x,int y,int l)
void spfa(int x)
dis[x]=0;
team[t]=x;
t++;
b[x]=true;
while(s!=t)
}} }
for(int i=1;i<=p;i++)
//cout<>n>>p>>m;
for(int i=1;i<=n;i++)
for(int i=1;i<=m;i++)
for(int i=1;i<=p;i++)
cout<70分 floyd:
#include#include#include#includeusing namespace std;
const int maxn=810;
const int maxm=1460;
int cow[510],cnt[maxn],dis[maxn][maxn];
int n,p,m,ans=1e9,q=0;
void floyd(int x)
ans=min(ans,q);
}int main()
for(int i=1;i<=p;i++)
for(int j=1;j<=p;j++)
if(i==j) dis[i][j]=0;
else dis[i][j]=1e9;
for(int i=1;i<=m;i++)
for(int k=1;k<=p;k++)
for(int i=1;i<=p;i++)
for(int j=1;j<=p;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
for(int i=1;i<=p;i++)
cout<70分dijkstra:
#include#include#include#include#includeusing namespace std;
const int maxn=810;
const int maxm=1460;
int dis[maxn],cow[510],cnt[maxn];
bool b[maxn];
int e[maxn][maxn];
int ans=1e9,q=0,minn,u;
int n,m,p;
void dijkstra(int x)
for(int i=1;i<=p;i++)
for(int j=1;j<=p;j++)
if(i==j) e[i][j]=0;
else e[i][j]=1e9;
for(int i=1;i<=m;i++)
for(int i=1;i<=p;i++)
cout
}
P1828 香甜的黃油 (spfa)
題目描述 農夫john知道每只奶牛都在各自喜歡的牧場 乙個牧場不一定只有一頭牛 給出各頭牛在的牧場和牧場間的路線,找出使所有牛到達的路程和最短的牧場 他將把糖放在那 題目鏈結 演算法 算出任意兩個牧場間最短距離,列舉目的地,取最小值。floyd會超時,對每個點用spfa。1 include 2 us...
題解 洛谷P1738 洛谷的資料夾
一 目錄概覽 二 題目大意 三 大致思路 四 實現 五 剖析 六 總結回顧 kkksc03想好了很多應該有的資料夾路徑名。問題是,需要是使這些資料夾都存在,需要新建幾個資料夾呢?資料夾路徑是什麼?例如 a b c,表示在根目錄下有a資料夾,在a資料夾裡有b資料夾,在b資料夾裡有c資料夾。其他路徑同理...
題解 洛谷P1443 馬的遍歷
1.注意輸出格式 printf 5d 代表左對齊,空5格。2.team陣列要開的大點。否則會wa或者re一些點。3.結構體來存team陣列,最後要判斷到不了輸出 1 好像也沒啥了。include include include include include includeusing namespa...