NOIP2012 文化之旅

2021-08-16 16:46:13 字數 1353 閱讀 4227

題解:求最短路問題,想著用floyd或dijkstra解決,最後用了floyd,在輸入的時候

對文化排斥和文化相同的提前進行處理,若不滿足題目條件的路我們直接把它

斷掉,也就是說在進行floyd主演算法之前我們的圖就已經是滿足題目條件的

這時只需要用floyd模板套用就行了,也不用新增額外語句

當然這份**還有一些問題,但資料太水拿了滿分 

**:

#include#include#include#include#include#include#include#include#include#include#include#include#define maxa 200

#define mod 20123

#define inf 0xffffff

using namespace std;

typedef long long ll;

int nation,cul,road,start,end;

int g[maxa][maxa],d[maxa],anti[maxa][maxa],culture[maxa],v[maxa];

int main()

if(!anti[culture[u]][culture[v]])

if(marku == 1)

for(int k=1;k<=nation;k++)

if(u != k &&culture[u] == culture[k] && g[u][k] != inf)

g[u][k] = inf;

if(markv == 1)

for(int k=1;k<=nation;k++)

if(v != k && culture[v] == culture[k] && g[v][k] != inf)

g[v][k] = inf;

marku = 0;

markv = 0;

} for(int k=start;k<=end;k++)

for(int i=start;i<=end;i++)

for(int j=start;j<=end;j++)

g[i][j] = min(g[i][j],g[i][k]+g[k][j]);

if(g[start][end] == inf)

printf("-1");

else printf("%d",g[start][end]);

}

NOIP2012 文化之旅 最短路

有一位使者要遊歷各國,他每到乙個國家,都能學到一種文化,但他不願意學習任何一種文化超過一次 即如果他學習了某種文化,則他就不能到達其他有這種文化的國家 不同的國家可能有相同的文化。不同文化的國家對其他文化的看法不同,有些文化會排斥外來文化 即如果他學習了某種文化,則他不能到達排斥這種文化的其他國家 ...

NOIP2012 JuniorT4 文化之旅

題目描述 有一位使者要遊歷各國,他每到乙個國家,都能學到一種文化,但他不願意學習任何一 種文化超過一次 即如果他學習了某種文化,則他就不能到達其他有這種文化的國家 不 同的國家可能有相同的文化。不同文化的國家對其他文化的看法不同,有些文化會排斥外來 文化 即如果他學習了某種文化,則他不能到達排斥這種...

文化之旅(NOIP2012普及組第四題)

有一位使者要遊歷各國,他每到乙個國家,都能學到一種文化,但他不願意學習任何一種文化超過一次,即如果他學習了某種文化,則他就不能到達其他有這種文化的國家。不同的國家可能有相同的文化。不同文化的國家對其他文化的看法不同,有些文化會排斥外來文化,即如果他學習了某種文化,則他不能到達排斥這種文化的其他國家。...