題解:求最短路問題,想著用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普及組第四題)
有一位使者要遊歷各國,他每到乙個國家,都能學到一種文化,但他不願意學習任何一種文化超過一次,即如果他學習了某種文化,則他就不能到達其他有這種文化的國家。不同的國家可能有相同的文化。不同文化的國家對其他文化的看法不同,有些文化會排斥外來文化,即如果他學習了某種文化,則他不能到達排斥這種文化的其他國家。...